使用-F选项时,pyinstaller中的exe失败。好吧没有那个选择

时间:2014-03-05 23:09:15

标签: python dll import matplotlib pyinstaller

我在导入matplotlib.pyplot的python脚本上使用pyinstaller。当生成一个充满文件的目录时,pyinstaller创建的exe运行正常。但是,当使用pyinstaller -F选项创建单个exe文件时,exe会失败。失败时报告了两个问题:

  1. 警告:文件已存在但不应该存在:C:\ Users \ Vern \ AppData \ Local \ Temp_MEI33442 \ Include \ pyconfig.h

  2. 最后两行追溯报告了这一点:

  3. 文件“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脚本工作正常。

2 个答案:

答案 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。