首页 > 解决方案 > 如果包含其他 Python 脚本的子进程,我如何制作一个独立的 Python exe?

问题描述

我有一个 Python 脚本,它基本上是运行其他脚本的中心枢纽。它可以运行的一些脚本使用 popen 作为子进程运行。没有导入其他脚本,因为我只是使用 popen 运行它们。现在的问题是我想把整个东西变成一个独立的可执行文件,我可以让任何人运行。有没有办法做到这一点?我使用 pyinstaller 将基本脚本转换为可执行文件,但由于未导入其他两个脚本,因此在创建可执行文件时不包含它们。

我已经尝试让每个人都可以执行,但他们最终都被排除在外,一些同事告诉我这不是一个好主意,但他们不知道另一种解决方案。

标签: pythonsubprocesspyinstallerexepopen

解决方案


我发现答案是将额外的脚本添加为数据文件。从那里您只需要更新 Popen 中的路径即可找到文件。要使用额外的脚本创建可执行文件,请使用:

pyinstaller -F --add-data <nameOfDependent> TheScript.py

where"--add-data <nameOfDependent>"用于添加未导入主脚本的依赖 python 脚本,最后一个是主脚本。

此外,nameOfDependent 必须具有脚本的名称和 ;。在最后。所以如果你的脚本是TestMe.py,那么将被替换为“TestMe.py;”。用“”包围它。

要处理脚本的路径,请按照 Masoud Rahimi 的答案给出的代码:Best way to call subprocess scripts in a Python exe

特别是指资源路径的部分。

请注意,由于子进程中脚本的调用方式,您仍然需要 Python 和运行可执行文件的机器上所需的已安装库。


推荐阅读