使用 Nuitka 编译任何 Python 程序后,我得到 "is not a valid win32 application" 错误

After compilation of any Python program with Nuitka I get "is not a valid win32 application" error

我正在尝试使用 Nuitka 将我的 Python 项目编译为 Windows 可执行文件 (.exe)。我在编译过程中没有得到 errors/warnings,但是当我尝试 运行 生成的可执行文件时,我在 Windows XP 上得到 "C:\Python34\test.exe is not a valid win32 application" 错误,在 Windows 10,也是)。即使我编译 "Hello, World!" 程序,问题仍然存在。有趣的是,我 可以 在同一台 PC 上从 Visual Studio IDE 轻松构建和 运行 C++ 项目。

我正在使用 Windows XP(x32 位)、Python 3.4.0 和 Microsoft Visual C++ 2008 Professional。

我该如何解决这个问题?

我安装了 Microsoft Visual Studio 2010 Express 而不是 Microsoft Visual Studio 2008 Professional,问题消失了。看起来 Nuitka 无法与以前版本的编译器一起使用。他们甚至在文档中说,Nuitka 是为 Visual Studio 2017+ 设计的(但我无法在 Windows XP 上安装最新版本),其他版本可能无法正常工作。

我曾经尝试过 Nuitka 网站上的第一步,并且与示例 1 相同。我发现:示例 1 使用 --mingw64 作为选项。 python -m nuitka --mingw64 hello.py

示例 2/用例 1 中引入了另一个选项: python -m nuitka --follow-imports program.py

我只复制了示例 1(有效)中的 hello 代码并将其重命名为 program.py(失败 - 甚至没有可执行文件!)。所以我敢肯定,原因将是电话而不是代码。 当我在第二次调用中输入 --mingw64 时,它起作用了。 我的第一个想法(我对此很陌生,也不是 nuitka 的专家)是第二个示例调用隐式使用了 gcc。第一次它要求安装它然后它似乎使用它。第一个调用似乎强制使用 mingw64 作为编译器。也可能是路径条目的顺序有所不同。除非您通过显式选项强制执行,否则只会执行第一个条目。