gpt4 book ai didi

python - 创建不带 MSVCP90.dll 的 Python EXE

转载 作者:太空狗 更新时间:2023-10-29 20:54:44 26 4
gpt4 key购买 nike

我正在尝试使用 Py2Exe 将 python 程序(使用 wxPython)转换为 Windows exe,但存在关于 MSVCP90.dll 的错误。看完py2exe fails to generate an executable在 StackOverflow 上,它说我需要下载这个文件。但是,它还表示所有目标用户都必须下载此文件。这将给我的用户带来极大的不便(主要是不知道如何下载文件的企业客户),那么有没有办法将其与程序一起打包?

谢谢!

最佳答案

什么是MSVCP90.dll

MSVCP90.dll 是多线程、动态的 Visual Studio 2008 C 运行时库。通常,您的应用程序应打包 MSVCP90.dll,除非您确定目标计算机具有匹配的 CRT。您可以使用任何打包软件打包必要的 DLL 和您的软件并进行分发。

MSVCP90.dll 的用途

您可能想知道为什么需要这个奇怪的 dll?嗯,CRT 对 python 来说并不是什么新鲜事。所有基于 C 的应用程序都严重依赖 C 库函数。标准 C 库函数的所有实现,例如(malloc、strcpy ..),仅举几例,都在这些库中实现。有不同的种类和具体的MSDN website有更多的细节。 enter image description here

分发 MSVCP90.dll

分发 CRT 时,您应该了解,根据您使用的 CRT,以 CRT 名称为后缀的版本号会有所不同。例如,MSVCP90.DLL 是来自 Visual Studio 2008 的 CRT。一台机器可以包含多个 CRT,它们位于应用程序安装路径的系统文件夹中。

如果您打算打包您的应用程序,则需要重新验证您的应用程序使用的是哪个 CRT 版本。包装错误的 CRT 或使用 CRT 可能会导致意外和未定义的效果。一般来说,您的 Python 安装使用的 CRT 应该与您应该打包的 CRT 相同。

确定正确的 MSVCRT

由于有不同版本的不同 CRT 构建,因此很难确定应该打包哪个 CRT。如果你有一个正在运行的应用程序(可执行),你可以使用 dependencywalker以确定正确的版本。右键单击任何 DLL 并单击属性,它会显示您从中选择该 DLL 的位置。 enter image description here

打包您的应用程序。

您可以尝试使用 PyInstaller打包您的应用程序。这将是将 DLL 导入目标机器的便捷方式。

关于python - 创建不带 MSVCP90.dll 的 Python EXE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10060765/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com