2012-08-11 52 views
0

我的cx_freeze構建工作正常,直到我將一個QWebView元素添加到窗口中。這意味着我應該導入QtWebKit,對吧?在Linux上一切正常。在Windows上,如果我運行main.py文件,一切正常。cx_freeze QtWebKit導入錯誤

如果我將它凍結成一個.exe,這是error I get。這是我的install.py文件:

from cx_Freeze import setup, Executable 

includes=["re","PyQt4.QtWebKit"] 

exe = Executable(
    script="main.pyw", 
    base="Win32GUI", 
    targetName = "LEX.exe" 
    ) 

setup(
    name = "blabla", 
    version = "1.3", 
    description = "My application", 
    options = {"build_exe": {"includes":includes}}, 
    executables = [exe] 
    ) 

我建立它在x64的Windows 7,但與PyQt4的和Python3.2的x86版本的x86。在那個QWebView元素之前,根本沒有任何問題。

+1

你有什麼版本的PyQt4?顯然[這個問​​題已在4.8.4中修復](http://code.google.com/p/pythonxy/issues/detail?id=237)。另外,如果你還沒有最新版本的cx_Freeze,你可以嘗試更新它。 – 2012-08-11 18:32:33

+0

PyQt的Linux和Windows版本都是4.9.4,cx_freeze版本是4.2.3。謝謝您的回答。 – ivica 2012-08-11 20:26:10

+1

請注意,您可以嘗試更新版本的cx_Freeze(4.3)。如果這不起作用,你可以嘗試詢問[cx_Freeze郵件列表](https://lists.sourceforge.net/lists/listinfo/cx-freeze-users)。 – 2012-08-11 20:53:26

回答

4

升級到cx_freeze 4.3並編輯導入沒有什麼用。進口現在是這樣的:

from PyQt4.QtNetwork import * 
from PyQt4.QtWebKit import QWebView,QWebPage 
+1

也得到了「No module named QtNetwork」。添加「從PyQt4.QtNetwork導入*」,它的工作原理! – holly 2013-09-10 04:43:28

1

不要添加進口(以及可能污染您的命名空間)只是有cx_Freeze認識的依賴。
而是像PyQt4.QtWebKit那樣將PyQt4.QtNetwork添加到「包含」列表中。
您也可以使用「包」選項包含包的所有模塊。也就是說,「軟件包」用於整個軟件包,「包含」用於模塊。