我正在尝试将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放在主可执行文件旁边,而不是放在子目录中。