[VCRUNTIME140.DLL在Python中使用cx_freeze时未添加]]

问题描述 投票:0回答:1

我对Python很陌生。我刚刚编写了一个程序来检查服务器的上次重新启动时间,并向我们的团队发送电子邮件。我们有30多个服务器,并且不可能在每台服务器上都安装python。因此,我使用cx_freeze创建了一个可执行文件。以下是我的setup.py文件。

from cx_Freeze import setup, Executable

setup(
    name = "RebootChecker",
    version = "1.0",
    description = "A Script to check the last reboot time of servers",
    options = {
        "build_exe": {              
            "include_msvcr": True,
            "add_to_path": True,
        }
    },
    executables = [Executable("RebootTester.py", base = "Win32GUI")]
)

该exe文件在我的计算机上运行文件,但是当我在服务器上尝试运行该文件时,该文件不起作用。它崩溃并显示错误-“该程序无法启动,因为您的计算机缺少VCRUNTIME.DLL”

,即使DLL在C:\ Windows \ System32中也可用。我发现python可执行文件的build文件夹中缺少DLL。因此,我手动将DLL复制到存在exe的文件夹中,但出现错误-该应用程序无法正确启动(0xc000007b)。单击“确定”关闭该应用程序

[我还试图通过将以下行添加到setup.py文件中来修改build_exe来添加DLL文件,但出现与上述相同的错误。

python_dir = os.path.dirname(sys.executable)
"include_files": [os.path.join(python_dir, "vcruntime140.dll")]

我什至尝试修复“ Microsoft C ++可再发行组件”应用程序,但无济于事。

[我在github帖子上看到,这是cx_freeze 5.0.2版上的一个已知问题,即使添加"include_msvcr": True之后,Visual Studio包也没有添加,但是我使用的是6.1版。

关于SO的其他答案仅提供上述方法作为解决方案,它们对我不起作用。

我该如何使用它?我已经花了几个小时了。感谢您提供任何帮助。

谢谢!

我对Python很陌生。我刚刚编写了一个程序来检查服务器的上次重新启动时间,并向我们的团队发送电子邮件。我们有30多个服务器,并且不可能在每个...

python cx-freeze
1个回答
0
投票

似乎您真正的问题是32位Python在64位Windows下在该计算机上运行。我猜您安装的Microsoft C ++可再发行组件也是64位。

© www.soinside.com 2019 - 2024. All rights reserved.