Py2exe MSVCR90.DLL运行错误



我正在尝试将python脚本转换为windows exe文件。我遵循py2exe教程,查看了使用py2exe安装的一些示例,并创建了一个setup.py文件,该文件将适当的VC dll附加到系统路径

from distutils.core import setup
import py2exe
import sys
sys.path.append("C:\My_VC_dlls")

然后复制到dist文件夹

from glob import glob
data_files = [("Microsoft.VC90.CRT", glob(r'C:My_VC_dlls*.*'))]

然后传递选项给setup

setup(
   options = {"py2exe": {"compressed": 1, "optimize": 2,
                         "ascii": 1, "bundle_files": 1}},
   zipfile = None,
   data_files=data_files,
   console = ['my_python.py']
)

我运行setup.py py2exe,它构建了可执行文件,它工作得很好

我被问到如何使exe看起来更像一个windows程序,所以我试图做样例singlefile/gui(安装py2exe)实例化一个类:目标

class Target:
    def__ Blah Blah Blah

一个清单模板

manifest_templete = '''
...

test_wx = Target(
     description = "....
     .....

,然后基本相同的设置选项,但使用:

setup(
   options...
   ....
   windows = [test_wx]

,并对脚本名称进行适当的更改,例如(test_wx.py -> my_python.py)

它构建了exe,但是当我启动它时,"这个程序无法启动,因为MSVCR90.dll缺失"

我的问题是,似乎当告诉py2exe它是一个控制台应用程序时,构建的exe知道在dist/MICROSOFT.VC90中查找。CRT/for DLL,但是当告诉py2exe它是一个windows应用程序时,构建的exe不会。简而言之,我如何解决这个问题?如何将DLL的位置嵌入到构建的exe中?

如果这是一个微不足道的问题,请提前道歉。我对Python和windows编程完全是新手。

您是否尝试在应用程序中调用sys.path.append("dist/MICROSOFT.VC90…/")?(不是setup . py)

还可以把vc90 dll放在主可执行文件旁边,而不是放在子目录中。

最新更新