2013-02-11 88 views
9

我正在將使用Python 2.7和Pyqt4編寫的簡單GUI腳本轉換爲使用py2exe的獨立可執行文件。我一直得到「沒有這樣的文件存在」的錯誤,我已經設法修復了一些,雖然這似乎固執。它無法找到msvcp90.dll,並返回一個帶有短回溯的distutils錯誤消息,然後返回到我的py2exe腳本,這不是很有啓發性。 我已經安裝了MS C++可再發行的運行時,如py2exe找不到msvcp90.dll

py2exe fails to generate an executable

建議,但我的腳本仍然無法找到該.dll。下面是我的py2exe腳本,用我的腳本的名稱擋了出來:

from distutils.core import setup 
from py2exe.build_exe import py2exe 
import sys, os, zmq 

sys.argv.append('py2exe') 

os.environ["PATH"] = \ 
os.environ["PATH"] + \ 
os.path.pathsep + os.path.split(zmq.__file__)[0] 

setup(
    options = {'py2exe':{'bundle_files':1,"includes":["zmq.utils", 
      "zmq.utils.jsonapi","zmq.utils.strtypes"]}}, 
    console = [{'script':"#######.py"}], 
    zipfile = None 
) 

我已經固定ZMQ的問題(未使用過的我的劇本,或者我的GUI,對於這個問題,我所知道的)。我究竟做錯了什麼?

+0

我認爲ZMQ的原因包括是由於''' 「包括」:「ZMQ (也可能是'''import sys,os,zmq''' stanza) – dja 2013-02-24 06:46:06

回答

9

對,我已經設法讓我的應用程序構建,雖然現在這個問題已經過時了,但我希望這個問題最終會被某人使用。

首先, py2exe可能是錯誤的工具。這是舊的和AFAICT無人維護。考慮使用PyInstaller。使用PyInstaller就像安裝它一樣簡單,安裝PyWin32,然後去python %path_to_pyinstaller%/pyinstaller.py --onefile --windowed source.py。 PyInstaller處理並排組裝等所有混亂問題,而無需執行任何操作。

總之,使用PyInstaller。

然而,回答你的問題,這個工作對我來說:

  1. 你鏈接到的問題 - 尤其是this answer正確的開始。找到合適的DLL並將它們複製到C:\ Python27 \ DLL
  2. 切斷您現有的setup.py文件。如果您沒有使用zmq,則沒有理由導入它。此外,對於您想要的windows=而不是console=的窗口應用程序。我的文件去(包裝show.py):

    #!/usr/bin/python 
    
    from distutils.core import setup 
    import py2exe 
    
    setup(options={'py2exe':{'bundle_files':1}}, 
         windows=['show.py']) 
    

    (這被夾斷http://www.blog.pythonlibrary.org/2010/07/31/a-py2exe-tutorial-build-a-binary-series/

+0

你的解決方案讓我的腳本生成一個exe文件,但它仍然不能正常工作。但是,我的問題解決了。謝謝。 – bythenumbers 2013-02-25 19:01:39

+1

原來,Thomas Heller仍在貢獻!http://sourceforge.net/p/py2exe/svn/737/tree/trunk/py2exe/ChangeLog – Barton 2013-08-21 00:19:48

+0

這是非常真實的, ['pyinstaller'](https://github.com/pyinstaller/pyinstaller/commits/develop)比['py2exe']更爲活躍(http://sourceforge.net/p/py2exe/svn/737/tree/軀幹/ py2exe /更新日誌)。 – Antonio 2015-04-07 13:08:59