【问题标题】:Add external exe file with pyinstaller使用 pyinstaller 添加外部 exe 文件
【发布时间】:2022-10-17 06:09:14
【问题描述】:
我有一个使用多个文件的 python 程序,包括一个用 subprocess.run(myprogram.exe). 调用的 .exe 程序
当我用pyinstaller 构建新的.exe 并尝试执行程序时,它找不到myprogram.exe。
我正在使用以下语句:
pyinstaller -w -F --onefile .\MyPythonProgram.py
myprogram.exe 与 MyPythonProgram.py 位于同一文件夹中。我应该更改任何内容以将其添加到.exe 吗?
【问题讨论】:
标签:
python
pyinstaller
exe
【解决方案1】:
在我回答之前,请注意版权、专利、法律等方面的影响。不要问我这个问题,我不是律师。
除非您将 .exe 复制到目标环境,否则您必须将其包含在 pyinstaller 的参数之一中。 PyInstaller 很棒,但它并不像您想象的那么聪明(例如,它不会扫描您的代码以查找对子进程的调用并自动尝试查找您的可执行依赖项)。
相反,您必须明确告诉它包含外部依赖项:
pyinstaller.exe --add-binary ".myprogram.exe;." --onefile .MyPythonProgram.py
下次,尝试阅读他们的docs,因为您使用的是-F 和--onefile(它们都做同样的事情)。
这个GitHub issue 帮助我回答了你的问题。它解释了为什么 --add-binary 的 arg 用引号括起来,以及最后需要 ;. 部分。
注意:我已排除您的 -w 选项以获得更清晰的答案