2013-07-31 69 views
1

我試圖凍結使用PySide庫的Python 3.3代碼,使用cx_freeze以及Windows XP(x86,SP2/3) 。PySide(1.1.2),cx_freeze,WinXP,Python 3.3:ImportError:DLL加載失敗

python setup.py build運行成功但可執行拋出ImportError

ImportError: DLL load failed: This application has failed to start because the application configuration is incorrect. Reinstalling [...]

同樣建立在Windows上運行7 64位(SP1)完美的罰款。

我使用的版本如下:

  • 的Python 3.3.0(V3.3.0:bd8afb90ebf2,2012年9月29日,十點55分48秒)[MSC v.1600 32位(英特爾) ]在Win32
  • cx_Freeze-4.3.1.win32-py3.3
  • PySide-1.1.2.win32-py3.3

兩個QT DLL庫被複制到build文件夾(QtCore.dllQtGui.dll),library-zip包含兩個.pyc等價物nts在PySide文件夾/模塊中。

這個問題,即使是最簡單的測試代碼中出現( 並且如果代碼是一個「活」的Python安裝運行以及 *):

from PySide import QtCore, QtGui 

if __name__ == "__main__": 
    app = QtGui.QApplication("My Application") 
    win = QtGui.QMainWindow() 
    win.show() 
    app.exec_() 

使用多了起來,TO-但由於PySide 1.2.0引入了一個新問題cx-freeze(文件加載錯誤)我想知道是否有人設法在Windows XP庫存上成功凍結PySide軟件包?否則將不得不等待PySide 1.2.1發佈,並保留我對該版本的期望。

  • 查看我的評論:我不確定這是否真的發生在我的測試中,實際上是出於同樣的原因或其他原因,例如,導致凍結的問題實際模塊建立沒有正確安裝..
+0

您說當代碼在實時Python安裝上運行時會發生問題?所以這不是特定於凍結的應用程序? –

+0

是的,這就是我所說的,但是當我在不同的平臺上進行測試時,一定發生在戰鬥的高峯期,模塊的實際安裝(最終成爲罪魁禍首)可能沒有正確安裝。我沒有再次重構這個場景來證明相反,但那是我的理論。爲了避免混淆,我將它放在大括號中,謝謝。 – bossi

回答

2

原來有一個簡單的解決這個問題:從一個DLL另一個模塊中應用程序的使用是丟失;將它複製到凍結的EXE旁邊的根構建文件夾中可輕鬆解決問題。

攻擊解決這些問題的最佳方法可能是將使用模塊中的所有DLL逐個拷貝到構建目錄中,直到凍結構建不再引發錯誤。我找不到另一種方式,因爲堆棧跟蹤沒有指向加載失敗的特定文件。

如果有人遇到類似的問題,我很樂意提供額外的信息。

+1

人們通常會推薦[Process Explorer](http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx)來查看正在運行的應用程序加載了哪些DLL。 –

0

我以前有過類似的問題,並且能夠通過下載「Microsoft Visual C++ 2008 Redistributable Package(x86)」來解決它。

相關問題