用py2exe捆绑PyQwt

时间:2009-05-22 19:46:13

标签: python pyqt py2exe

我有一个py2exe的标准安装脚本,我将基于PyQt的应用程序捆绑到Windows .exe文件中。

今天我尝试了一个使用PyQwt模块的简单脚本,它似乎不起作用。 py2exe运行正常,但是当我执行它创建的.exe时,它会将以下内容转储到日志文件中并且不会运行:

Traceback (most recent call last):
  File "qwt_test.pyw", line 5, in <module>
  File "zipextimporter.pyo", line 82, in load_module
  File "PyQt4\Qwt5\__init__.pyo", line 32, in <module>
  File "zipextimporter.pyo", line 98, in load_module
ImportError: MemoryLoadLibrary failed loading PyQt4\Qwt5\Qwt.pyd

当我查看PyQt4\Qwt5\目录中的build\bdist.win32\winexe\collect-2.5时,Qwt.pyd绝对存在。

我似乎无法在网上找到有关此错误的任何有用信息。什么可能导致它?感谢。

2 个答案:

答案 0 :(得分:4)

py2exe并不是唯一的方法,也许不是最好的方法,将Python应用程序的exe文件放在一起 - 特别是,它几乎不支持pyqt。拜托,请你查看PyInstaller,了解PyQt(以及Linux和Mac,如果你关心......) - 只要确保你使用SVN头结账,而不是“发布”版本,此时已严重过时(这个问题很快就会消失......)。

答案 1 :(得分:1)

一些选项:

  1. 尝试使用py2xe bundle_files options(3,2,1)(特别是如果你把它们放在一个大的库拉链中,有些dll不喜欢它)。
  2. 确保在Windows \ system32或可执行文件的目录下存在msvcp71.dll的副本。
  3. 尝试明确地排除dll(将Qwt.pyd添加到dll_excludes选项,并且(在构建之后)将Qwt.pyd(和_Qwt.pyd,如果存在)复制到可执行路径。