py2exe:由于 DLL,编译的 Python Windows 应用程序将无法运行

2024-01-03

我承认我对 Python 还很陌生,而且我还不知道自己在做什么。最近,我使用 Python 2.6.2 和 wxPython 2.8 创建了一个非常小的 Windows 应用程序。而且效果很好;我对它正常运行的情况感到非常满意。通常我的意思是当我直接通过 Python 解释器调用它时,如下所示:

> python myapp.py

然而,我想更进一步,将其实际编译成一个独立的可执行文件。所以我跟着这些说明 http://wiki.wxpython.org/DistributingYourApplication来自使用 py2exe 的 wxPython wiki。起初它在命令行中给我错误,说 MSVCR90.dll 丢失。然后我将 MSVCR90.dll 复制到我的 Python\DLLs 文件夹中。乍一看好像它修复了它,因为它成功地完成了它需要做的事情。它确实以一个快速警告结束,指出该程序依赖于一些 DLL 文件,我可能需要也可能不需要分发它们。

因此,我导航到 py2exe 创建的 dist 文件夹并尝试运行我的可执行文件。但尝试打开它只会弹出一个错误对话框,内容如下:

This application failed to start because MSVCR90.dll was not found.
Re-installing the application may fix this problem.

所以我继续将 MSVCR90.dll 再次复制到此 dist 文件夹中。但这并没有达到目的。然后我将其复制到WINDOWS\system32目录中。那也没有做到。我需要做什么才能让这个东西发挥作用?


您不能只复制 msvcr*.dll - 需要使用并排程序集的规则来设置它们。正如 Sam 指出的那样,您可以通过安装可再发行包来做到这一点,或者只要遵守规则,您也可以将它们与可执行文件放在一起。

请参阅此处的“将 Visual C++ 库 DLL 部署为私有程序集”部分:如何使用 XCopy 进行部署 http://msdn.microsoft.com/en-us/library/ms235291(VS.80).aspx有关详细信息,但基本上您的应用程序如下所示:

c:\My App\MyApp.exe
c:\My App\Microsoft.VC90.CRT\Microsoft.VC90.CRT.manifest
c:\My App\Microsoft.VC90.CRT\msvcr90.dll

这样做的好处之一是非管理员用户可以使用您的应用程序(我相信您需要成为管理员才能通过可再发行安装程序安装运行时)。而且不需要任何安装程序 - 您只需将文件复制到 PC 上即可运行。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

py2exe:由于 DLL,编译的 Python Windows 应用程序将无法运行 的相关文章

随机推荐