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程序,所以我正在尝试使用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 个回答
1
你有没有试过在你的应用程序里调用 sys.path.append("dist/MICROSOFT.VC90.../") 呢?(不是在 setup.py 里)
另外,把 vc90 的 dll 文件放在你的主程序旁边,而不是放在一个子文件夹里,这样怎么样?