Py2exe MSVCR90.DLL运行时错误

时间:2014-08-08 20:40:48

标签: python windows dll py2exe

我正在尝试将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(
   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安装):Target

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 /为DLL,但在告诉py2exe它是一个Windows应用程序,内置的exe没有。简而言之,我如何解决这个问题呢?如何将DLL的位置嵌入到构建的exe中?

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

1 个答案:

答案 0 :(得分:1)

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

如何将vc90 dll放在主可执行文件旁边,而不是放在子目录中。