2011-11-17 115 views
1

我試圖編譯一些使用scons作爲構建系統的C++源代碼。在我的64位Windows機器上使用python 3.2.X(64位)以及我認爲是python 2.7.X(32位)時,嘗試運行scons時會出現以下錯誤:爲什麼我會收到錯誤「scons:***沒有名爲'win32'的平臺」?

scons:** *沒有名爲'win32'的平臺

我很確定我的2.7安裝是32位的,因爲在過去我曾嘗試在64位系統上使用scons,並且它徹底拒絕了它的功能。我花了一個小時左右的時間玩它,試圖修復安裝,在谷歌/ SO等周圍戳,但無法找到解決方案。最後,我使用32位和64位安裝程序(我想我必須都安裝在同一位置?)卸載python 2.7,卸載scons,刪除剩餘的python27文件夾並重新安裝32位python和scons。

現在scons的作品!

因爲我沒有找到解決方案,所以我認爲我應該發佈我的,但我也想知道是什麼原因導致這個錯誤?

什麼導致scons錯誤「沒有平臺命名'win32'」?

回答

4

我自己實際上有這個問題。這是由scons.bat使用錯誤的python庫引起的。不知怎的,安裝被搞砸了,當你在2.7中運行時,它會嘗試使用python 3的庫。我通過編輯scons.bat腳本並在腳本中設置python path和python home來解決這個問題。

更改顯示在這裏。

Set PYTHONHOME=C:\Python27\ 
Set PYTHONPATH=C:\Python27\Lib\;C:\MinGW\bin;C:\Python27\Lib\site-packages 
Set PATH=%PYTHONHOME%;%PYTHONPATH%;%PATH% 

... 
more stuff here 
... 
:WinNT 
setlocal 
@REM ensure the script will be executed with the Python it was installed for 
set path=%~dp0;%~dp0..;%path% 
c:\Python27\python -c "from os.path import join; import sys; sys.path = [ join (sys.prefix, 'Lib', 'site-packages', 'scons-2.0.1'), join(sys.prefix, 'Lib', 'site- packages', 'scons'), join(sys.prefix, 'scons-2.0.1'), join(sys.prefix, 'scons')] + sys.path; import SCons.Script; SCons.Script.main()" %* 
endlocal & set SCONS_ERRORLEVEL=%ERRORLEVEL% 

之後它工作正常,只要我指定此scons.bat腳本運行scons。

+0

非常好,謝謝! 我幾乎已經放棄了這個答案。 – Dogmatixed

+0

我希望有人在我掙扎的時候回答了這個問題,現在希望我的經驗能幫助別人。 – daramarak

+0

是的,我認爲你的解決方案可能比我所做的「卸載,重新安裝」更好。 – Dogmatixed

相關問題