py2exe 将 MSVC DLL 包含在 .exe 中

5 投票
3 回答
5414 浏览
提问于 2025-04-11 09:26

在使用py2exe来打包带有wxPython的Python应用程序时,通常需要一些MSVC的DLL文件,这样在新安装的机器上才能让生成的.exe文件正常工作。特别是,最常用的两个DLL文件是msvcp71.dll和msvcr71.dll。

第一个DLL文件可以通过这个方法包含到.exe文件里。不过,第二个DLL文件即使我特别要求包含,它也只是被py2exe放在dist目录里,而没有放进可执行文件里。

有没有办法让py2exe把这两个DLL文件都包含在.exe文件里呢?

3 个回答

1

是的,py2exe可以做到这一点。查看这个链接。如果你使用的是python2.7版本,把“msvcr71”换成“msvcp90”。

1

py2exe 这个工具做不到这一点。你可以把 py2exe 包装起来(这里有一个维基上的例子,展示了如何用 NSIS 来实现);如果你不想用 NSIS 或 InnoSetup,也可以自己做一个包装。

另外,如果你确定你的用户会有兼容的 msvcr71.dll 文件安装(我记得是 Vista 或 XP SP2 的用户),那么你可以不把它包含在内。更有用的是,如果你使用的是 Python 2.3(或者更早的版本),那么 Python 会链接到 msvcr.dll,而不是 msvcr71.dll,任何 Windows 用户都会有这个文件,所以你就不用担心了。

7

那这样不是会启动失败吗?你需要把 msvcr71.dll 放在和程序文件(exe)同一个文件夹里,这样程序在运行的时候才能找到这个文件,把它加载到内存中。

这个文件是程序正常运行所必需的,所以你不能让 py2exe 把它和其他的DLL文件一起解压。

撰写回答