2009-05-22 194 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如果存在的話)到你的可執行文件路徑。