py2exe找不到msvcp90.dll

时间:2013-02-11 15:23:24

标签: python-2.7 py2exe

我正在努力将使用Python 2.7和Pyqt4编写的简单GUI脚本转换为使用py2exe的独立可执行文件。我不断得到“没有这样的文件存在”的错误,我已经设法修复了一些,虽然这个看起来很顽固。它找不到msvcp90.dll,并返回一条错误消息,其中包含对distutils的短回溯,然后返回到我的py2exe脚本,这不是很有启发性。 我按照

中的建议安装了MS C ++可再发行的运行时

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没有使用过这个问题)。我究竟做错了什么?

1 个答案:

答案 0 :(得分:9)

是的,我已经设法让我的应用程序构建,虽然问题现在已经适度陈旧,但我希望这最终会对某人有用。

首先, py2exe可能是错误的工具。这是旧的,AFAICT没有维护。请考虑使用PyInstaller。使用PyInstaller就像安装它,安装PyWin32,然后转到python %path_to_pyinstaller%/pyinstaller.py --onefile --windowed source.py一样简单。 PyInstaller处理所有混乱的并排组件等等,而无需你做任何事情。

简而言之,请使用PyInstaller。

然而,回答你的问题,这对我有用:

  1. 您链接的问题 - 特别是this answer是正确的开始。找到合适的DLL并将它们复制到C:\ Python27 \ DLLs
  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/