2011-03-15 133 views
22

我要通過Python解釋器運行時,它依賴於LXML和行之有效的一個wxPython應用程序。然而,創建與py2exe exe文件時,我得到這個錯誤Py2exe LXML愁楚

ImportError: No module named _elementpath 

然後我用python setup.py py2exe -p lxml,我沒有得到上面的錯誤,但 另一個說

ImportError: No module named gzip 

任何人都可以讓我知道了什麼問題是,我該如何解決它。我也應該把任何 DLL文件像libxml2,libxslt等在我的dist文件夾?我搜索了計算機 並沒有找到這些文件,所以也許他們不需要?

謝謝。

編輯:我只是想與python setup.py py2exe -p -i gzip和exe文件被創建。但生成的exe不運行。我雙擊它,它什麼都不做。

下面是setup.py腳本我使用

from py2exe.build_exe import py2exe 
from distutils.core import setup 

setup(windows=[{"script": "gui.py"}]) 



EDIT2:我嘗試使用cx_freeze作爲替代,但得到了同樣的

ImportError: No module named _elementpath 

錯誤。之後不知道如何繼續。

回答

37

Py2exe允許您指定其他軟件包/模塊以包含options參數到setup(),以防它們未被自動檢測到。下面應該工作:

from distutils.core import setup 
import py2exe 

setup(
    windows=[{'script': 'gui.py'}], 
    options={ 
     'py2exe': 
     { 
      'includes': ['lxml.etree', 'lxml._elementpath', 'gzip'], 
     } 
    } 
) 

我也最近發現PyInstaller,已經內置支持一些著名的軟件包,包括LXML,所以這可能是值得一試爲好。

+1

嗨,你的腳本工作。感謝 – 2011-03-15 09:53:08

+0

如果你想創建爲**單一的可執行**(無需額外的PYC,dll等)中,你可以把它如下:'從distutils.core進口設置; import py2exe,sys; sys.argv.append( 'py2exe'); 設置( \t窗口= [{ '腳本':「your_script。PY'}], \t zip文件=無, \t選項= { \t \t 'py2exe': \t \t { \t \t \t 'bundle_files':1, \t \t \t '壓縮':真, \t \t \t '包括':[ 'lxml.etree', 'lxml._elementpath', 'gzip的'], \t \t} \t} );' – 2016-01-21 22:12:48

0

有時你需要做的另一個動作更長時間後修改setup.py文件。

如上所述here, 如果軟件包安裝在「eggs」檔案中,應該有必要卸載該軟件包。 然後通過強制的easy_install與「-Z」選項如下,以dezip存檔重新安裝(我有包裝的paramiko問題):

pip uninstall paramiko 
easy_install -Z paramiko