在 Windows 上使用 Nuitka 编译 hello-world.py 时遇到问题。
我正在使用的命令是:
nuitka --standalone --portable --remove-output --recurse-all --python-version=3.4 hello_world.py
错误是:
WindowsError: [Error 2] The system cannot find the file specified:
File "C:\Users\win_user\Anaconda3\Lib\site-packages\nuitka\build\SingleExe.scons", line 866:
shell = False
File "c:\Python27\lib\subprocess.py", line 709:
errread, errwrite)
File "c:\Python27\lib\subprocess.py", line 957:
startupinfo)
相同的代码在 Linux 上编译和运行良好。相同的代码在 Windows 的解释器中运行良好。
错误消息中提到的文件确实存在。有什么建议么?
使用Win7。 Python 3.4 (Anaconda x64)。使用 MinGW。
最佳答案
好的,为了任何有同样错误的人的利益,这里是我自己问题的答案:
我没有让 MinGW 工作。我最终安装了 MSVC2010。这可能会更好,因为无论如何都建议在 Windows 上使用 Python 3.4(参见:https://docs.python.org/3.4/using/windows.html#compiling-python-on-windows)。
以下是使用 python 3.4 和 MSVC++2010 和 Win7 64 位安装 Nuitka 的说明:
MSVC2010 的其他有用说明如下:
1. https://wiki.qt.io/How_to_setup_MSVC2010
2. http://uk.mathworks.com/matlabcentral/answers/95039-why-does-the-sdk-7-1-installation-fail-with-an-installation-failed-message-on-my-windows-system
步骤是:
运行 dotNetFx40_Full_setup.exe (来自 http://www.microsoft.com/en-gb/download/confirmation.aspx?id=17851 )
运行 vc_web.exe (来自 http://microsoft-visual-cpp-express.soft32.com/download/file/id/795918/?no_download_manager=true )
运行 winsdk_web.exe (来自 https://www.microsoft.com/en-us/download/details.aspx?id=8279 )
运行 VS10sp1-KB983509.exe (来自 http://www.microsoft.com/en-au/download/details.aspx?id=23691 )
运行 VC-编译器-KB2519277.exe (来自 http://www.microsoft.com/en-au/download/details.aspx?id=4422 )
现在安装了 C 编译器。
修复创建一个名为: 的文件C:\Program Files (x86)\Microsoft Visual Studio 10.0\vc\bin\amd64\vcvars64.bat
在文件中输入文本 CALL "C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd"/x64
运行 "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall"amd64
在上述命令之后,控制台文本应变为黄色。
(有关 amd64 以外的选项,请参见此处:https://msdn.microsoft.com/en-us/library/f2ccy3wt.aspx)
cl hello.c
(假设您的测试程序名为 hello.c)
你好.exe
C 编译器现在经过测试。
运行 python-2.7.6.amd64.msi (来自 https://www.python.org/ftp/python/2.7.6/python-2.7.6.amd64.msi )
运行 Anaconda3-2.3.0-Windows-x86_64.exe (来自 https://3230d63b5fc54e62148e-c95ac804525aac4b6dba79b00b39d1d3.ssl.cf1.rackcdn.com/Anaconda3-2.3.0-Windows-x86_64.exe )
运行 Nuitka-5.1.143.win-amd64.py34.msi (来自 http://nuitka.net/releases/Nuitka-5.1.143.win-amd64.py34.msi )
现在所有安装完成!
"C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall"amd64
nuitka --standalone --portable hello.py
cd hello.dist
你好.exe
在第一次使用nuitka时它给出了这样的通知:“Nuitka将使用Dependency Walker(http://dependencywalker.com)工具来分析Python扩展模块的依赖关系。是否可以下载并放入APPDATA中(无需安装程序,缓存,一次性问题)。继续下载?[是]/否”。我说是的,然后 hello world 程序开始工作了。
Hello world 在此过程之后工作,但更复杂程序的一些导入会导致警告。当我弄清楚那个时会编辑我的答案。或者如果我无法弄清楚会问另一个问题。
关于mingw - Windows 上的 Nuitka,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33104873/