我有一个python程序,它使用多个文件,包括一个.exe
程序,调用subprocess.run(myprogram.exe).
当我构建新的。exe
与pyinstaller
并尝试执行程序,它找不到myprogram.exe
。
我使用下面的语句:
pyinstaller -w -F --onefile .MyPythonProgram.py
myprogram.exe
和MyPythonProgram.py
在同一个文件夹中。我应该为它做些什么来添加到.exe
吗?
在我回答之前,请注意在将可执行文件捆绑到程序中,因为这涉及到版权、专利、法律等方面的问题。我知道OP的问题是针对他们自己的.exe
的,但这条信息是给其他阅读这篇文章的人的。别问我这个,我不是律师。
除非将.exe
复制到目标环境中,否则必须将其包含在pyinstaller
的参数之一中。PyInstaller是伟大的,但它并不像你想象的那样聪明(例如,它不会扫描你的代码调用子进程,并自动尝试找到你的可执行依赖项)。
相反,你必须显式地告诉它包含外部依赖:
pyinstaller.exe --add-binary ".myprogram.exe;." --onefile .MyPythonProgram.py
下次,试着阅读他们的文档,因为你正在使用-F
和--onefile
(它们都做同样的事情)。
--add-binary
的参数在引号中,以及;.
部分在末尾的必要性。
注意:我已经排除了您的-w
选项,以获得更清晰的答案