【问题标题】:PyInstaller: Single-file executable doesn't runPyInstaller:单文件可执行文件不运行
【发布时间】:2015-02-05 16:41:16
【问题描述】:

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

我从here 下载了pyinstaller 的实验性Python 3 分支(文件为python3.zip,但链接现已失效)。我使用python setup.py install 安装了它。

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

print('Hello, World!')

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

pyinstaller --onefile test.py

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

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

请注意,不能使用py2exe 或cx_freeze。必须是pyinstaller。

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

【问题讨论】:

  • 你是从哪里安装的?
  • @PadraicCunningham 我从我提供的链接下载了它。如果你去这里:github.com/pyinstaller/pyinstaller/wiki 并向下滚动,有一个 Python 3 版本的下载链接。
  • 链接似乎无处可去?我试过了,诚然使用pip3 install https://github.com/pyinstaller/pyinstaller/archive/python3.zip 安装linux,它工作正常,所以可能值得试一试,除非这实际上是你试图发布的链接。
  • 你是用python还是python3来setup.py安装的?
  • 所以python3 setup.py install?

标签: python windows pyinstaller


【解决方案1】:

我设法解决了这个问题。

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

问题是由UPX(eXectutables 的终极打包程序)引起的,该工具旨在减少可执行文件的大小。如果 PyInstaller 在系统上找到它,则默认使用 UPX。由于我仍然无法理解的原因,UPX 打包的可执行文件需要很长时间才能自解压并运行。

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

pyinstaller --onefile --noupx test.py

作为旁注,将--debug 选项添加到pyinstaller 命令通常可以帮助识别诸如此类的问题。

【讨论】:

  • 有趣 - UPX 运行速度非常快,每当我使用它时。
猜你喜欢
  • 1970-01-01
  • 2020-10-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-26
  • 2018-02-21
  • 2019-07-07
  • 1970-01-01
相关资源
最近更新 更多