2009-05-22 191 views
2

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

今天我试了一个简单的脚本,它使用了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肯定是存在的。

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

回答

4

py2exe并不是将Python应用程序的exe文件放在一起的唯一方式,也可能不是最好的方式 - 尤其是,它几乎不支持pyqt。请恳请您,查看PyInstaller,了解有关PyQt(以及Linux和Mac,您应该关心的内容) - 请确保您使用SVN头结帐,而不是“已发布”版本,该版本在这一次严重过时(希望很快就会消失的问题......)。

+0

亚历克斯,py2exe工程只是为什么你喜欢PyInstaller?对我来说,它似乎不太受支持,更新和一些陈旧的使用。 – 2009-05-31 08:11:46

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如果存在的话)到你的可执行文件路径。