尝试构建--onefile时PyInstaller与PyQt的错误

tay*_*ron 7 python pyqt pyinstaller

我正在尝试使用PyInstaller 1.5编译PyQt程序.当我使用--onedir(默认值)时,以下两个程序都可以正常工作,但这会创建相当大的程序.我想使用--onefile选项,但是当我运行创建的onefile应用程序时,我收到错误:

Traceback (most recent call last):
  File "<string>", line 11, in <module>
  File "pyinstaller/PyInstaller/loader/iu.py", line 468, in importHook
raise ImportError("No module named %s" % fqname)
ImportError: No module named PyQt4.QtCore
Run Code Online (Sandbox Code Playgroud)

这两个都发生此错误:

import sys 
from PyQt4 import QtCore, QtGui 

app =QtGui.QApplication(sys.argv) 
window =QtGui.QMainWindow() 
window.setCentralWidget(QtGui.QLabel("Hello")) 
window.show() 
sys.exit(app.exec_()) 
Run Code Online (Sandbox Code Playgroud)

还有这个:

import sys
import PyQt4.QtCore, PyQt4.QtGui 

app = PyQt4.QtGui.QApplication(sys.argv) 
window = PyQt4.QtGui.QMainWindow() 
window.setCentralWidget(PyQt4.QtGui.QLabel("Hello")) 
window.show() 
sys.exit(app.exec_()) 
Run Code Online (Sandbox Code Playgroud)

有没有人有任何想法?

mAs*_*pEE 6

对我来说工作正常(Windows 7x64bit,Python 2.7x32bit)只需将QT目录添加到您的系统路径或使用p选项将其添加到命令行:

PyInstaller -y -F --distpath="." -p "C:\Python27\Lib\site-packages\PyQt4" test.py
Run Code Online (Sandbox Code Playgroud)

如果您从可执行文件安装PyQt,它会自动完成所有这些操作:

http://sourceforge.net/projects/pyqt/files/


Fel*_*Yan 3

1,Pyinstaller不会创建比--onedir更小的--onefile。当您运行 --onefile 时,它​​只是创建一个包装器,将目录中的所有内容提取到临时目录,然后运行它。

2、Pyinstaller不支持import PyQt4.QtCore, PyQt4.QtGui,并且from PyQt4 import QtCore, QtGui是根据here唯一支持的方式。

3、你的PyQt4是什么版本?Riverbank 的安装程序是 GPL 版本吗?

4、你的步骤正确吗?例如Makespec.py然后Build.py