构建Python 3和PyQt的可执行文件

Wro*_*ngs 21 py2exe pyinstaller pyqt4 python-3.x

我使用PyQt4在Python 3.1中构建了一个相当简单的应用程序.完成后,我希望将应用程序分发到计算机而不安装任何一个.

我几乎完全关心Windows平台,所以我的目标是拥有一个可执行文件,最后可能还有一些资源文件和.dll.

经过四处搜寻,我得出结论

  • py2exe仅支持最高版本2.7的Python
  • pyinstaller仅支持2.6版本的Python
  • cx_Freeze对我不起作用,因为我在尝试执行成功构建二进制文件时不断收到以下错误:

Y:\Users\lulz\build\exe.win32-3.1>system_shutdown.exe
Traceback (most recent call last):
File "Y:\Program Files (x86)\Python\lib\site-packages\cx_Freeze\initscripts\Console3.py", line 27, in exec(code, m.__dict__)
File "Y:/Users/lulz/Documents/Coding/Python3/projects/System Shutdown/system_shutdown.pyw", line 5, in from PyQt4 import QtCore
File "ExtensionLoader_PyQt4_QtCore.py", line 16, in AttributeError: 'NoneType' object has no attribute 'modules'
Run Code Online (Sandbox Code Playgroud)

所以我的问题基本上是两个问题:

  1. 有没有其他方法,但cx_Freeze用我的配置构建二进制文件?
  2. 如果没有,cx_Freeze问题可能是什么?

如有必要,我可以提供有关第二个问题的更多信息,例如我调用cx_Freeze,我的distutils安装脚本等.

谢谢你的帮助和评论.

小智 13

您可以通过在cx_Freeze包中将一行代码附加到freeze.py来解决此问题.

它在这里描述:http: //www.mail-archive.com/cx-freeze-users@lists.sourceforge.net/msg00212.html

它至少对我有用:)

干杯,Almar

  • 有点迟了,但对于未来的读者,你可以通过冻结Win32GUI基础来抑制控制台窗口.[这里的例子](http://cx_freeze.readthedocs.org/en/latest/cxfreeze_distutils.html). (3认同)