Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中使用cx_freeze时,未添加VCRUNTIME140.DLL_Python_Cx Freeze - Fatal编程技术网

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

在Python中使用cx_freeze时,未添加VCRUNTIME140.DLL,python,cx-freeze,Python,Cx Freeze,我对Python非常陌生。我刚刚编写了一个程序来检查服务器上次重启的时间,并向我们的团队发送电子邮件。我们有30多台服务器,不可能在每台服务器上都安装python。所以我用cx_freeze创建了一个可执行文件。下面是我的setup.py文件 from cx_Freeze import setup, Executable setup( name = "RebootChecker", version = "1.0", description = "A Script to

我对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)。单击“确定”关闭应用程序

我还试图通过修改build_exe来添加DLL文件,将下面的行添加到setup.py文件中,但得到了与上面相同的错误

python_dir = os.path.dirname(sys.executable)
"include_files": [os.path.join(python_dir, "vcruntime140.dll")]
我甚至尝试修复“微软C++可再分发”应用程序,但没有效果。 我在github的一篇文章中看到,这是cx_freeze 5.0.2版上的一个已知问题,在该版本中,即使添加了
“include_msvcr”:True
,也没有添加Visual studio软件包,但我使用的是6.1版

其他答案仅给出上述方法作为解决方案,它们不适用于我

我怎样才能让它工作?我已经做了好几个小时了。在此方面的任何帮助都将不胜感激


谢谢

您真正的问题似乎是32位Python在64位Windows下运行。我猜您安装的微软C++重新分配也是64位。
  • 找不到
    vcruntime140.dll
    文件,因为它的32位版本(应该在
    C:\Windows\SysWOW64
    下)可能不存在
  • C:\Windows\System32
    (这将是64位版本!)手动复制文件时,由于
    0xc000007b
    而失败,这是
    状态\u无效\u图像\u格式的代码
    ,因为现在32位
    python.exe
    正在尝试加载64位
    vcruntime140.dll

我建议改为在64位机器上使用64位Python。

是否可能在64位机器上使用32位Python,并且相应的文件
C:\Windows\SysWOW64\vcruntime140.dll
不存在?(这将解释为什么您得到了0xc000007b-这是
状态\u无效\u图像\u格式
,因为当您从
C:\Windows\System32
复制该文件时,您让一个32位程序加载了一个64位DLL)在这种情况下,我建议在64位机器上改用64位Python.OMG!我刚刚注意到我的机器上安装了32位Python。我觉得自己好笨。谢谢你的评论+我把它变成了一个答案