在Windows上的Nuitka

Ron*_*Ron 5 mingw windows-7-x64 anaconda python-3.4 nuitka

在Windows上使用Nuitka编译hello-world.py时遇到问题.

我使用的命令是:

nuitka --standalone --portable --remove-output --recurse-all --python-version=3.4 hello_world.py
Run Code Online (Sandbox Code Playgroud)

错误是:

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)
Run Code Online (Sandbox Code Playgroud)

相同的代码在Linux上编译和运行正常.相同的代码在Windows上的解释器中运行良好.

错误消息中提到的文件确实存在.有什么建议?

使用Win7.Python 3.4(Anaconda x64).使用MinGW.

Ron*_*Ron 8

好的,为了任何有相同错误的人的利益,这里是我自己的问题的答案:

我没能让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 64bit安装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 -安装-失败-与安安装失败的消息,上我的窗口系统

步骤是:

  1. 安装.net 4.x:
    运行dotNetFx40_Full_setup.exe(来自http://www.microsoft.com/en-gb/download/confirmation.aspx?id=17851)

  2. 安装Visual C++ 2010 Express:
    运行vc_web.exe(来自http://microsoft-visual-cpp-express.soft32.com/download/file/id/795918/?no_download_manager=true)

  3. 联合安装任何Visual C++ 2010运行时/可再发行组件更新或等于10.0.30319.
    (在我的情况下,我有一个干净的Windows安装此设置,所以没有什么可以删除)

  4. 安装Windows SDK 7.1 :(选择所有安装选项)
    运行winsdk_web.exe(来自https://www.microsoft.com/en-us/download/details.aspx?id=8279)

  5. 安装VS 2010 SP1:
    运行VS10sp1-KB983509.exe(来自http://www.microsoft.com/en-au/download/details.aspx?id=23691)

  6. 安装MSVC 2010 SP1编译器更新:
    运行VC-Compiler-KB2519277.exe(来自http://www.microsoft.com/en-au/download/details.aspx?id=4422)

C编译器现已安装.

  1. 要在64位计算机上进行测试,我发现缺少一个文件,必须手动创建.(见这里:http://www.w7forums.com/threads/vcvarsall-bat-no-64bit-support-vcvars64-bat-missing.6606/)
    修复创建一个名为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

  2. 设置环境:
    运行"C:\ Program Files(x86)\ Microsoft Visual Studio 10.0\VC\vcvarsall"amd64
    控制台文本应在上述命令后变为黄色.
    (有关amd64以外的选项,请参见此处:https://msdn.microsoft.com/en-us/library/f2ccy3wt.aspx)

  3. 编译测试程序:(当cmd文本仍为黄色时执行此操作)
    cl hello.c
    (假设您的测试程序名为hello.c)

  4. 运行测试程序:
    hello.exe

C编译器现已测试.

  1. 安装python 2.7 :( Nuitka需要这个,即使python代码是3.x)
    运行python-2.7.6.amd64.msi(来自https://www.python.org/ftp/python/2.7.6/python- 2.7.6.amd64.msi)

  2. 安装python 3.4 :( Anaconda堆栈似乎是在Windows上获得此功能的最佳方式)
    运行Anaconda3-2.3.0-Windows-x86_64.exe(来自https://3230d63b5fc54e62148e-c95ac804525aac4b6dba79b00b39d1d3.ssl.cf1.rackcdn.com/Anaconda3 -2.3.0-Windows-x86_64.exe)

  3. 安装Nuitka :(一直是新版本,所以最好检查http://nuitka.net/pages/download.html)
    运行Nuitka-5.1.143.win-amd64.py34.msi(来自http://nuitka.net/)版本/ Nuitka-5.1.143.win-amd64.py34.msi)

现在全部安装完成!

  1. 测试Nuitka :(假设你的测试程序是hello.py)
    "C:\ Program Files(x86)\ Microsoft Visual Studio 10.0\VC\vcvarsall"amd64
    nuitka --standalone --portable hello.py
    cd hello.dist
    hello.exe

关于nuitka的第一次使用,它给出了这个通知:"Nuitka将使用Dependency Walker(http://dependencywalker.com)工具来分析Python扩展模块的依赖性.可以下载并将其放入APPDATA(没有安装程序需要,缓存,一次性问题.)继续下载?[是] /否".我说是,然后你好世界计划的工作.

Hello world在此过程之后工作,但在更复杂的程序上的一些导入会导致警告.当我想出那个时,我会编辑我的答案.如果我无法弄明白,或者会问另一个问题.

  • 注意:以上对于简单的程序似乎可以正常工作,但没有经过全面测试。另请注意,严格来说 Nuitka 需要 VS 2015,但似乎可以与上述 2010 express 一起使用。 (2认同)