2015-10-13 141 views
4

在windows上使用Nuitka編譯hello-world.py時出現問題。在Windows上的Nuitka

我使用的命令是:

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。

回答

7

OK,任何人誰擁有相同的錯誤的好處,這裏的答案是我自己的問題:

我未能獲得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

步驟是:

  1. Install .ne牛逼4.x版:
    運行dotNetFx40_Full_setup.exe(從http://www.microsoft.com/en-gb/download/confirmation.aspx?id=17851

  2. 安裝Visual C++ 2010速成:
    運行vc_web.exe(從http://microsoft-visual-cpp-express.soft32.com/download/file/id/795918/?no_download_manager=true

  3. 聯合國 -install任何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)的\微軟的Visual Studio 10.0 \ VC \ BIN \ AMD64 \ vcvars64.bat 在文件中把文字CALL「 C:\ Program Files文件\微軟的SDK \的Windows \ V7.1 \ BIN \ SetEnv.cmd 「/ 64

  2. 建立環境:
    運行」 C:\ Program Files文件(x86)的\微軟的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編譯器。

  • 安裝Python 2.7:(Nuitka需要此即使Python代碼是3.X)
    運行蟒-2.7.6.amd64.msi(從https://www.python.org/ftp/python/2.7.6/python-2.7.6.amd64.msi

  • 安裝Python 3.4:(蟒蛇堆棧似乎是得到這個在Windows上的sanest方式)
    運行Anaconda3-2.3.0-Windows的x86_64.exe(從https://3230d63b5fc54e62148e-c95ac804525aac4b6dba79b00b39d1d3.ssl.cf1.rackcdn.com/Anaconda3-2.3.0-Windows-x86_64.exe

  • 安裝Nuitka:(新版本的所有時間,以便更好地檢查http://nuitka.net/pages/download.html
    運行Nuitka-5.1.143.win-amd64.py34.msi(從http://nuitka.net/releases/Nuitka-5.1.143.win-amd64.py34.msi

  • 所有安裝現在完成了!

  • 測試Nuitka:(假設你的測試程序是hello.py
    「C:\ Program Files文件(x86)的\微軟的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在此過程之後工作,但某些導入更復雜的程序會導致警告。當我找出一個答案時,會編輯我的答案。或者如果我弄不明白,會問另一個問題。

    +1

    注意:上述對於簡單的程序似乎工作正常,但沒有完全測試。請注意,嚴格來說,Nuitka需要VS 2015,但似乎與上述2010年表達一致。 – Ron

    +0

    我沒有相同的運氣,似乎上面的一些下載不再工作/列出。如果有一個虛擬機(用於windows),它已經爲nuitka運行了所有的東西,這將會是太棒了 - 我浪費了足夠的時間來試圖讓它運行起來。 –

    +0

    不幸的是,我不適合 – Tetora