繁体   English   中英

wxPython py2exe应用程序无法正确捆绑?

[英]wxPython py2exe app not bundling properly?

我有一个wxPython应用程序,正在尝试使用py2exe使其成为exe,但是遇到了一些麻烦。 我在MSVCP90.dll所在的目录中包含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应用程序有多困难?

我的py2exe也有类似的问题。 我的项目使用了其他库,例如wxPython和Requests。

这为我工作:

  1. 使用gui2exe创建项目

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

  3. dist目录中,您将找到应该在我们的计算机上工作的已编译项目。

  4. 下一步是这两个教程的混合: py2execx_freeze

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

  6. C:\\WINDOWS\\WinSxS\\x86_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.21022.8_x-ww_d08d0375文件msvcm90.dllmsvcp90.dllmsvcr90.dll复制到此目录

  7. 还复制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上启动了已编译的应用程序。

您是否有任何尝试pyinstaller的愿望? 我也曾为wxPython项目尝试过py2exe并收到许多晦涩的错误。 Pyinstaller在第一次尝试时就发现了,我认为它甚至更容易。

经过将近一年的尝试,但没有成功。 终于明白了。 您必须排除两个文件“ 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']

解决此问题的方法是从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/zh-cn/download/details.aspx?id=29

我的经验是,很少找到缺少可视c运行时的Windows机器,但是您需要准备好以防万一。

麦克,祝你好运

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM