当使用 py2exe 通过 wxPython 分发 Python 应用程序时,通常需要一些 MSVC DLL 来使 .exe 在新安装的机器上工作。特别是,两个最常见的 DLL 是 msvcp71.dll 和 msvcr71.dll
前者可以使用此技巧包含在 .exe 中。但是,后者只是由 py2exe 放在dist
目录中,而不是放在可执行文件中,即使我特别要求包含它。
知道如何使 py2exe 将两者都包含在 .exe 中吗?
那么它不会启动失败吗?您希望msvcr71.dll
与 exe 位于同一目录中,以便库加载器能够找到并将其链接到应用程序的内存映射中。
它是基本操作所必需的,因此您不能只将py2exe
其与其余的 DLL 一起解包。
py2exe 不能这样做。您可以包装 py2exe(wiki 上有一个示例显示如何使用 NSIS 执行此操作);如果不能使用 NSIS 或 InnoSetup,您可以构建自己的包装器。
或者,如果您确定您的用户将安装兼容的 msvcr71.dll 副本(IIRC Vista 或 XP SP2 用户),那么您可以不包含它而离开。也许更有用的是,如果您使用 Python 2.3(或更早版本),那么 Python 链接到 msvcr.dll 而不是 msvcr71.dll,并且任何 Windows 用户都将安装它,所以您不必担心。
是的,py2exe 可以做到这一点。查看此链接。如果您使用的是 python2.7,请将“msvcr71”替换为“msvcp90”。