wxPython py2exe应用程序没有正确捆绑?

时间:2012-10-18 23:24:39

标签: python dll wxpython py2exe

我有一个wxPython应用程序,我正在尝试使用py2exe进入exe,但我遇到了一些麻烦。我在脚本所在的目录中有MSVCP90.dll,在py2exe完成后,启动exe时会显示“程序无法启动,因为MSVCR90.dll缺失...”。为什么不找到它?

虽然它是py2exe'ing,但我也得到以下内容:

The following modules appear to be missing
['Carbon', 'Carbon.Files']
...
Your executable(s) also depend on these dlls which are not included,
you may or may not need to distribute them.
...
  OLEAUT32.dll - C:\PATH
  USER32.dll - C:\PATH
...
  MSVCP90.dll - C:\PathToTheDllInMyScriptsFolder

这里有什么我想念的吗?使用.py wxPython应用程序并将其转换为.exe wxPython应用程序有多难?

4 个答案:

答案 0 :(得分:3)

我遇到了与py2exe类似的问题。我的项目使用其他库,如wxPython和Requests。

这对我有用:

  1. 使用gui2exe创建项目

  2. 指定非常基本的设置,如目标类和数据文件(在我的情况下 - 图像,sqlite数据库等)和编译项目。

  3. dist目录中您将找到适用于我们机器的已编译项目。

  4. 接下来的步骤是这两个教程的混合:py2execx_freeze

  5. dist创建目录Microsoft.VC90.CRT

  6. msvcm90.dll

  7. 复制到此目录文件msvcp90.dllmsvcr90.dllC:\WINDOWS\WinSxS\x86_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.21022.8_x-ww_d08d0375
  8. 还复制C:\WINDOWS\WinSxS\Manifests\x86_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.21022.8_x-ww_d08d0375.manifest,但重命名为Microsoft.VC90.CRT.manifest

    我使用Win XP 32位和Python 2.7.3完成了这项工作,并在另一台xp机器和Windows 7上成功启动了编译应用程序。

答案 1 :(得分:2)

你有没有尝试pyinstaller的愿望。 我也曾为wxPython项目尝试了py2exe,并收到了许多模糊的错误。 Pyinstaller在第一次尝试时就曝光了,我觉得它更容易。

答案 2 :(得分:2)

经过近一年的努力,建立一个没有成功的人。终于明白了。您必须排除这两个文件' msvcp90.dll',' msvcr71.dll'。

dll_excludes = [' libgdk-win32-2.0-0.dll',' libgobject-2.0-0.dll',' tcl84.dll',                 ' tk84.dll',' msvcp90.dll',' msvcr71.dll']

答案 3 :(得分:1)

处理此问题的方法是从py2exe程序包中排除MSVCP90.dll。以下是我的一个设置脚本的一部分:

dll_excludes = ['libgdk-win32-2.0-0.dll', 'libgobject-2.0-0.dll', 'tcl84.dll',
                'tk84.dll','MSVCP90.dll']

setup(
    data_files = data_files,
    options = {"py2exe": {"compressed": 2,
                          "optimize": 2,
                          "includes": includes,
                          "excludes": excludes,
                          "packages": packages,
                          "dll_excludes": dll_excludes,
                          "bundle_files": 1,
                          "dist_dir": "dist",
                          "xref": False,
                          "skip_archive": False,
                          "ascii": False,
                          "custom_boot_script": '',
                         }
              },
    zipfile = None,
    windows = [filename]
    )

然后,您将负责确保在最终用户的计算机上安装MS Visual C ++运行时。你可以在这里得到它:

http://www.microsoft.com/en-us/download/details.aspx?id=29

我的经验是很难找到缺少visual c运行时的Windows机器,但是你需要准备好处理这个以防万一。

祝你好运, 麦克