2013-11-27 46 views
4

我在一個奇怪的事情發生的圈子裏跑。基本上我正在嘗試一個簡單的窗口應用程序與PyQt5 + python3.3 + cx_freeze4.3.2。問題運行完美通話蟒蛇:cx_freeze + PyQt5 + python

python test.py 

現在的第二部分基本setup.py到cx_freeze:

import sys 
from cx_Freeze import setup, Executable 

base = None 
if sys.platform == 'win32': 
    base = 'Win32GUI' 

options = { 
    'build_exe': { 
     'includes': 'atexit' 
    } 
} 

executables = [ 
    Executable('test.py', base=base) 
] 

setup(name='test', 
     version='0.1', 
     description='test', 
     options=options, 
     executables=executables 
    ) 

構建它:

python test.py build 

創建後續文件夾:

build/exe.win32-3.3:

/platforms 
/imageformats 
test.exe 
icudt49.dll 
icuin49.dll 
icuuc49.dll 
libGLESv2.dll 
library.zip 
PyQt5.QtCore.pyd 
PyQt5.QtGui.pyd 
PyQt5.QtWidgets.pyd 
python33.dll 
Qt5Core.dll 
Qt5Gui.dll 
Qt5Widgets.dll 
sip.pyd 
unicodedata.pyd 
_bz2.pyd 

現在運行test.exe一切正常,因爲它應該。

將生成文件夾複製到其他PC時出現問題。錯誤彈出,當我運行TEST.EXE

此應用程序無法啓動,因爲它無法找到或加載 QT平臺插件「窗口」。

可用的平臺插件是:最小化,屏幕外,窗口。

重新安裝應用程序可能修復問題

根據一切我讀它是關於plataforms的dll/.exe文件不qwindow.dll裏面找到。爲什麼它只發生在其他PC(WIN7)?開發PC(win7)工作正常。要調試它,並確保所使用的qwindow.dll是plataforms裏面的一個/我將該文件夾重命名爲plataformFOO /,然後嘗試運行test.exe,現在在開發PC中也出現同樣的問題,所以,dll位於正確的文件夾中,將它重新命名爲plataforms /並且一切正常。如果操作系統相同,並且該文件夾是開發PC上的文件夾的簡單副本,爲什麼地獄不在其他PC上工作。

我谷歌,閱讀負載的東西,但無法找出問題。如果有人可以幫忙;)

+0

這是非常奇怪的 - 它說,它無法加載「窗口」平臺的插件,但隨後將其列爲可用的插件之一。我想它一定是由於某種原因加載失敗。也許它依賴於別的東西?嘗試在程序工作的PC上使用[Process Explorer](http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx),並查看它是否從其他地方加載DLL。 –

+0

現在在個人電腦上進行了測試,一切工作正常,qwindows.dll從根文件夾的平臺/內部加載(沒有其他qwindows.dll正在加載)..在其他PC上的dll沒有加載 – phreaking

+0

'根文件夾',你的意思是cx_Freeze複製它的生成文件夾?它是否從該文件夾之外加載任何其他DLL? –

回答

-5

令人遺憾的是,cx_freeze對一些自定義庫(以及我的意思是非內置模塊來自python)不起作用。我嘗試構建TTK對象(實際上來自ttk模塊的colorchooser)有類似的問題。

你可能想嘗試其他編譯器,如Compile Python using py2exe in 64 bit machine 祝你好運。

+1

py2exe不支持python 3.3,我錯了嗎? – phreaking

+0

是的它不:(你需要將你的代碼移植到2.7 – Saelyth

0

我有同樣的問題,我使用PyQt5和cx_Freeze 5.0.1

複製蟒蛇/庫/插件/平臺目錄複製到包含.exe的目錄中運行蟒蛇4.4.0的Python 2.7.13。

運行可執行文件,它應該工作