在Python中使用cx_freeze时,未添加VCRUNTIME140.DLL
我对Python非常陌生。我刚刚编写了一个程序来检查服务器上次重启的时间,并向我们的团队发送电子邮件。我们有30多台服务器,不可能在每台服务器上都安装python。所以我用cx_freeze创建了一个可执行文件。下面是我的setup.py文件在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
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位。
- 找不到
文件,因为它的32位版本(应该在vcruntime140.dll
下)可能不存在C:\Windows\SysWOW64
- 从
(这将是64位版本!)手动复制文件时,由于C:\Windows\System32
而失败,这是0xc000007b
,因为现在32位状态\u无效\u图像\u格式的代码
正在尝试加载64位python.exe
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。我觉得自己好笨。谢谢你的评论+我把它变成了一个答案