【问题标题】:Py2exe MSVCR90.DLL Runtime ErrorPy2exe MSVCR90.DLL 运行时错误
【发布时间】:2014-08-08 20:40:48
【问题描述】:

我正在尝试将 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 编程的新手。

【问题讨论】:

    标签: python windows dll py2exe


    【解决方案1】:

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

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

    【讨论】:

    • 我刚刚尝试将 DLL 放在主 exe 旁边,但它给了我一个不同的错误“R6034 应用程序试图错误地加载 C 运行时库。”
    • 我检查了答案是否正确。我随后发现了 R6034 错误。我必须在 setup.py 中定义的清单中添加一个依赖部分。这个链接帮助了我.. stackoverflow.com/questions/1153643/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-21
    • 1970-01-01
    • 1970-01-01
    • 2010-12-20
    • 1970-01-01
    • 2013-01-06
    • 2011-02-28
    相关资源
    最近更新 更多