一个简单的 python 脚本需要在没有安装 python 的 windows 服务器上运行。
我使用了 py2exe,它生成了一个健康的 dist 子目录,以及在本地机器上运行良好的 script.exe。
但是,当我在服务器(Windows Server 2003 R2)上运行它时,它会产生:
系统无法执行指定的程序。
错误级别为 9020。
有任何想法吗?
要使 py2exe 正常工作,您必须在应用程序中包含正确版本的 Microsoft C 运行时 DLL。
对于 Python2.6,这是 MSVCR90.dll 版本 9.0.21022.8,可以从 Microsoft Visual C++ 2008 Redistributable Package 获得:
请注意,此安装程序的 SP1 包含不同版本的 DLL,因此无法正常工作。
今年早些时候我花了一段时间在 py2exe 教程中仔细解释了这一点,所以我只链接到那个: http: //www.py2exe.org/index.cgi/Tutorial#Step5
它可能缺少一些必需的 DLL。尝试使用depends.exe来确定可能缺少的内容。它可能是一个 msvc-something-something.dll
我没有找到问题的原因,但是在同一脚本上使用 python 2.5 和 py2exe 在服务器上运行良好。
我猜2.6下的py2exe有问题。
由于 Python 2.6 是针对 Visual Studio 2008 构建的,因此目标计算机还必须具有 Visual Studio 2008 库,可从Visual C++ 2008 Redistributable package获得。
我确认在 Windows XP 或 Server 2003 的干净构建(两者都没有 Visual Studio 2008 可再发行组件)上,Python 2.6 py2exe 可执行文件将因上述错误而失败,但在安装可再发行组件包后,可执行文件运行正常。