py2exe 在 .exe 中包含 MSVC DLL

发布于 2024-07-07 02:34:33 字数 365 浏览 9 评论 0原文

当使用 py2exe 通过 wxPython 分发 Python 应用程序时,通常需要一些 MSVC DLL 才能使 .exe 在新安装的计算机上运行。 特别是,两个最常见的 DLL 是 msvcp71.dll 和 msvcr71.dll

前者可以使用 这个提示。 然而,后者只是由 py2exe 放置在 dist 目录中,而不是放入可执行文件中,即使我特别要求包含它。

知道如何使 py2exe 将两者都包含在 .exe 中吗?

When using py2exe to distribute Python applications with wxPython, some MSVC DLLs are usually needed to make the .exe work on freshly installed machines. In particular, the two most common DLLs are msvcp71.dll and msvcr71.dll

The former can be included in the .exe using this tip. However, the latter is just placed in the dist dir by py2exe and not into the executable, even if I specifically ask to include it.

Any idea how to cause py2exe to include both inside the .exe ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

感情旳空白 2024-07-14 02:34:33

那岂不是启动失败了? 您希望 msvcr71.dll 与 exe 位于同一目录中,以便库加载器能够找到它并将其链接到应用程序的内存映射中。

它是基本操作所必需的,因此您不能只让 py2exe 将其与其余 DLL 一起解压。

Wouldn't it fail to launch, then? You want msvcr71.dll in the same directory as the exe, so that the library loader will be able to find and link it into the application's memory map.

It's needed for basic operation, so you can't just let py2exe unpack it with the rest of the DLLs.

痴骨ら 2024-07-14 02:34:33

py2exe 无法做到这一点。 您可以包装 py2exe(wiki 上有一个示例,展示了如何使用 NSIS 进行此操作) ; 如果无法使用 NSIS 或 InnoSetup,您可以构建自己的包装器。

或者,如果您确定您的用户将安装 msvcr71.dll 的兼容副本(IIRC Vista 或 XP SP2 用户),那么您可以不包含它。 也许更有用的是,如果您使用 Python 2.3(或更早版本),那么 Python 会链接到 msvcr.dll 而不是 msvcr71.dll,并且任何 Windows 用户都会安装它,因此您可以不用担心它。

py2exe can't do this. You can wrap py2exe (there is an example on the wiki showing how to do that with NSIS); you could build your own wrapper if using NSIS or InnoSetup wasn't an option.

Alternatively, if you're positive that your users will have a compatible copy of msvcr71.dll installed (IIRC Vista or XP SP2 users), then you could get away without including it. More usefully, perhaps, if you use Python 2.3 (or older), then Python links against msvcr.dll rather than msvcr71.dll, and any Windows user will have that installed, so you can just not worry about it.

蓦然回首 2024-07-14 02:34:33

是的,py2exe 可以做到这一点。 查看此链接。如果您使用的是 python2.7,请将“msvcr71”替换为“ msvcp90”。

Yes, py2exe can do this. View this link.And if you are using python2.7, replace "msvcr71" to "msvcp90".

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文