Python 尝试生成--onefile时PyQt出现PyInstaller错误

Python 尝试生成--onefile时PyQt出现PyInstaller错误,python,pyqt,pyinstaller,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

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

有人有什么想法吗?

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

2、Pyinstaller不支持导入PyQt4.QtCore、PyQt4.QtGui,并且根据,PyQt4导入QtCore、QtGui是唯一受支持的方式

你的PyQt4版本是什么?GPL版本是否来自Riverbank的安装程序

4、您是否正确地遵循了这些步骤?e、 g.
Makespec.py
然后
Build.py

对我来说效果很好(Windows 7x64bit,Python 2.7x32bit),只需将QT目录添加到系统路径或使用
p
选项将其添加到命令行:

PyInstaller -y -F --distpath="." -p "C:\Python27\Lib\site-packages\PyQt4" test.py
如果您从Executable安装PyQt,它会自动为您执行所有这些操作:


我在pyinstaller 3.4(Python3.6,PyQt5)中也遇到了同样的问题,最后通过修改和中的解决方案使其正常工作

该方法概述如下:

1) 运行“pip安装pip==18.1”。使用18.1版是至关重要的,尽管也有更新的版本。完成此过程后,您可以通过“pip安装pip--升级”来升级pip

2) 安装pyinstaller开发版本:“pip安装”

3)正常运行pyinstaller


希望这有帮助

我试图为一个PyQt构建找到我的example.spec文件,这是我不久前在linux机器上做的。我找不到它,但我想我必须对spec文件中的Analysis()定义做些什么。也许我错了,我所做的只是PyQt4导入QtCore中的
,QtGui
导入语法。事实上,您总是可以将
PyQt4
添加到spec文件中,这将确保pyinstaller将包含它。您是否介意指导我如何将PyQt4(或任何其他大型软件包)添加到spec文件中?恐怕这些文档不够清晰,我无法理解我在做什么。我正在运行最新的PyInstaller主干版本,我正在运行最新的PyQt MacPorts版本。我使用先前生成的.spec文件运行Build.py。我最后使用了--onedir,因为正如@FelixYan所提到的,从长远来看,它不会节省任何硬盘空间(并且会减慢速度,因为每次都要提取程序的内容)。谢谢不知何故,pyinstaller并没有自动包含PySide库。不过,你的解决方案对我有效。但还有其他解决办法吗?
PyInstaller -y -F --distpath="." -p "C:\Python27\Lib\site-packages\PyQt4" test.py