PyInstaller:单文件可执行文件无法运行

时间:2015-02-05 16:41:16

标签: python windows pyinstaller

我尝试使用pyinstaller从Python应用程序创建Windows的单文件可执行文件。

我从here下载了pyinstaller的实验性Python 3分支(向下滚动,您将找到下载链接,文件为py3.zip)。我使用python setup.py install安装了它。 更新:我也尝试使用Python 2版本,并遇到了同样的问题。

然后我创建了一个名为test.py的测试python脚本,其中包含以下内容:

print('Hello, World!')

之后,我运行以下命令来创建单文件可执行文件:

pyinstaller --onefile test.py

命令成功,我确认已生成文件dist/test.exe。但是,当我尝试运行它时,我得到的只是一个空的控制台窗口。什么都没有出现,程序永远不会终止。它永远挂在那里,直到我强行关闭它。

I get an empty console window.

调用pyinstaller test.py(没有--onefile选项)可以正常工作。那么 问题是什么?

请注意,使用py2execx_freeze不是一种选择。它必须是pyinstaller

更新:我刚刚在Python 2下测试了它(使用正常的PyInstaller版本),我遇到了同样的问题。所以,这不仅仅是Python 3的问题。

1 个答案:

答案 0 :(得分:16)

我设法解决了这个问题。

我发现程序确实运行了。但是,在显示Hello, World!消息之前,它已经挂了很长时间(就像5分钟!)。

实际上,问题是由UPX(针对可扩展的Ultimate Packer)引起的,该工具旨在减少可执行文件的大小。如果在系统中找到它,PyInstaller默认使用UPX。由于我仍然无法掌握的原因,UPX打包的可执行文件需要很长时间才能自行提取和运行。

因此,只需运行带--noupx选项的命令即可解决问题。

pyinstaller --debug --onefile --noupx test.py

有关详细信息,请查看GitHub issue