我在导入matplotlib.pyplot的python脚本上使用pyinstaller。当生成一个充满文件的目录时,pyinstaller创建的exe运行正常。但是,当使用pyinstaller -F选项创建单个exe文件时,exe会失败。失败时报告了两个问题:
警告:文件已存在但不应该存在:C:\ Users \ Vern \ AppData \ Local \ Temp_MEI33442 \ Include \ pyconfig.h
最后两行追溯报告了这一点:
文件“C:\ Users \ Vern \ Documents \ Python \ testplot \ build \ testplot \ out00-PYZ.pyz \ matplotlib.pyplot”,第80行,在_backend_selection中
文件“C:\ PyInstaller \ PyInstaller \ loader \ pyi_importers.py”,第409行,在load_module中 module = imp.load_module(fullname,fp,filename,self._c_ext_tuple)
ImportError:无法导入模块'PySide.QtCore'
最后一个,ImportError是exe停止的地方。
我在Windows 7计算机上使用python 2.7.6和pyinstaller 2.1。
pyinstaller运行时会生成一些警告消息。他们看起来像这样:
警告:未找到lib:Ct的QtGui4.dll依赖关系:/WinPython/python-2.7.6/Lib/sitepackages/PyQt4/plugins \ iconengines \ qsvgicon4.dll
警告:未找到lib:Ct的QtSvg4.dll依赖关系:/WinPython/python-2.7.6/Lib/sitepackages/PyQt4/plugins \ iconengines \ qsvgicon4.dll
警告:未找到lib:Ct的QtCore4.dll依赖关系:/WinPython/python-2.7.6/Lib/sitepackages/PyQt4/plugins \ iconengines \ qsvgicon4.dll
...更像是后面的内容,但已被省略。
当-F选项被使用或未被使用时,这些警告是由pyinstaller生成的,所以我不知道它们是否相关,但它们似乎非常可疑。我在很多方面都不在我的专业领域,所以请原谅我的无知。无论如何,当不使用-F选项时,即使使用这些警告,exe也运行正常。它只在使用-F选项时失败。
我在SO和护目镜上搜索过但没有任何运气。我希望能够使用-F选项生成单个exe文件以进行分发。我没有使用pyinstaller的任何其他选项,我没有对自动生成的spec文件做任何事情。当使用-F转换为单个exe文件时,我的其他不导入matplotlib的python脚本工作正常。
答案 0 :(得分:0)
使用PyInstaller
尝试使用ImportError: could not import module 'PySide.QtCore'
打包我的程序时,我也得到--onefile
,但使用--onedir
选项时没有问题。尽管事实上PySide.QtCore
在运行时出现在临时目录中,但仍然如此。在我的代码中,我直接导入PyQt4,而其他模块正在导入PySide。根据您发布的内容,您的代码中也会使用这两个模块。
阅读this后,我尝试添加' PySide'作为我的spec文件中的一个排除强制独家使用PyQt4和exe现在运行正常。排除PySide或PyQt4也可能对你的情况有所帮助。
答案 1 :(得分:0)
这个问题在这里得到了解答: Pyinstaller QtCore Module import error
总之,PyInstaller 2.1有一个QT的错误,但在开发版本中修复了它。所以得到或等待PyInstaller 2.2。