Skip to main content
 首页 » 编程设计

python之使用 py2exe 时遇到问题

2025年05月04日14me-sa

所以我正在尝试制作一个 exe 文件。我使用的是 python 2.7,据我所知,我安装了正确版本的 py2exe。我编写了一个简单的 setup.py 代码来创建 exe 文件。

但是,当我运行它时,出现错误:

错误:MSVCP90.dll:没有那个文件或目录

现在,我尝试通过两种方式解决这个问题:

  1. 我安装了 MSVCP90.dll 文件并将其与 python27 dll 放在一起,然后运行安装程序。这成功创建了一个可执行文件。但是,当我尝试运行可执行文件时,它说:

程序无法启动,因为您的计算机缺少 MSVCR90.dll。尝试重新安装程序以解决此问题。

我已经下载了这个 dll 并将其放入 python27 和 exe 中以查看会发生什么,但都没有用。

  1. 我排除了安装文件中使用的 MSVCP90.dll 文件。同样,这成功创建了一个可执行文件,但我在单击它时遇到了同样的错误。

我已经重新安装了 python 和 py2exe 无数次,但没有帮助。

有没有人知道我可以做些什么来让这个可执行文件正常工作?

请您参考如下方法:

正如您在评论中提到的,您正在使用 wxpython。我对 wxpython 和 py2exe 有同样的问题。我通过将 MSVCP90.dll 的 list 添加到 exe 文件来解决它。尝试将这些行添加到 setup.py 并查看它是否有效。

manifest = """<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> 
  <assemblyIdentity 
    version="5.0.0.0" 
    processorArchitecture="x86" 
    name="%(prog)s" 
    type="win32" 
  /> 
  <description>%(prog)s</description> 
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> 
    <security> 
      <requestedPrivileges> 
        <requestedExecutionLevel 
            level="asInvoker" 
            uiAccess="false"> 
        </requestedExecutionLevel> 
      </requestedPrivileges> 
    </security> 
  </trustInfo> 
  <dependency> 
    <dependentAssembly> 
      <assemblyIdentity 
            type="win32" 
            name="Microsoft.VC90.CRT" 
            version="9.0.21022.8" 
            processorArchitecture="x86" 
            publicKeyToken="1fc8b3b9a1e18e3b"> 
      </assemblyIdentity> 
    </dependentAssembly> 
  </dependency> 
  <dependency> 
    <dependentAssembly> 
        <assemblyIdentity 
            type="win32" 
            name="Microsoft.Windows.Common-Controls" 
            version="6.0.0.0" 
            processorArchitecture="X86" 
            publicKeyToken="6595b64144ccf1df" 
            language="*" 
        /> 
    </dependentAssembly> 
  </dependency> 
</assembly>""" 
 
... 
 
windows = [{"script":"myscript.pyw",'other_resources': [(24,1,manifest)]}]