8

我正在尝试使用 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

此错误发生在这两个方面:

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_()) 

还有这个:

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_()) 

有没有人有任何想法?

4

3 回答 3

6

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

PyInstaller -y -F --distpath="." -p "C:\Python27\Lib\site-packages\PyQt4" test.py

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

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

于 2013-09-23T17:46:21.543 回答
3

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

2、Pyinstaller不支持import PyQt4.QtCore, PyQt4.QtGui,是这里from PyQt4 import QtCore, QtGui唯一支持的方式。

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

4、你的步骤正确吗?比如Makespec.pyBuild.py

于 2011-12-18T00:20:17.200 回答
0

我在使用 pyinstaller 3.4(python 3.6,PyQt5)时遇到了同样的问题,最后通过调整此处此处找到的解决方案使其正常工作。

方法总结:

1)运行“pip install pip==18.1”。尽管也存在较新的版本,但使用 18.1 版本至关重要。完成此过程后,您可以通过“pip install pip --upgrade”升级 pip

2)安装pyinstaller开发版:“pip install https://github.com/pyinstaller/pyinstaller/archive/develop.tar.gz

3 ) 正常运行pyinstaller

希望这可以帮助!

于 2019-01-29T08:55:36.007 回答