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

2024-10-01 09:18:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我承认我对Python很陌生,我还不知道自己在做什么。最近,我使用Python 2.6.2和wxpython2.8创建了一个非常小的Windows应用程序。它工作得很好,我对它的正常工作很满意。通常我的意思是,当我直接通过Python解释器调用它时,如下所示:

> python myapp.py

但是,我想更进一步,将其编译成一个独立的可执行文件。所以我从wxPython wiki中使用py2exe跟踪these instructions。一开始它在命令行中给了我错误,说MSVCR90.dll丢失了。然后我将MSVCR90.dll复制到Python\dll文件夹中。从一开始看起来就像是它修复了它,因为它成功地完成了它需要做的事情。最后一个简短的警告是程序依赖一些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目录中。那也没起作用。我需要做什么才能让这东西工作?


Tags: py文件夹应用程序可执行文件applicationwindowsdist错误
2条回答

我相信安装Microsoft C++ Redistributable Package将正确安装所需的DLL。

不能只复制msvcr*.dll—它们需要使用并排程序集的规则进行设置。您可以通过安装Sam指出的可再发行包来实现这一点,或者只要遵守规则,就可以将它们放在可执行文件旁边。

见“部署VisualC++库DLL作为私有程序集”的部分:这里{{a1}以获取详细信息,但基本上您的应用程序看起来如下:

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

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

相关问题 更多 >