Почему я получаю сообщение об ошибке «scons: *** нет платформы с именем« win32 »»? - PullRequest
1 голос
/ 17 ноября 2011

Я пытался скомпилировать некоторый исходный код C ++, который использует scons в качестве своей системы сборки.На моей машине с 64-битным Windows с python 3.2.X (64-битной) и тем, что я думал как python 2.7.X (32-битная), я получаю следующую ошибку при попытке запуска scons:

scons: *** нет платформы с именем 'win32'

Я был совершенно уверен, что моя установка 2.7 была 32-битной, потому что в прошлом я пытался использовать scons в 64-битной системе, и она была прямойотказался функционировать.Я потратил около часа на то, чтобы поиграть с ним, попытался восстановить установку, покопаться в Google / SO и т. Д., Но не смог найти решение.Наконец, я удалил python 2.7 с помощью 32- и 64-разрядного установщика (я полагаю, что я должен был установить оба в одном месте?), Удалил scons, удалил оставшуюся папку python27 и переустановил 32-разрядные python и scons.

Теперь scons работает!

Поскольку я не нашел решения для SO, я подумал, что должен опубликовать свое, но я также хотел бы знать, что вызывает эту ошибку?

Что вызывает ошибку scons "нет платформы с именем 'win32'"?

1 Ответ

4 голосов
/ 16 декабря 2011

У меня на самом деле была эта проблема сама. Это вызвано тем, что scons.bat использует неправильную библиотеку python. Каким-то образом установка облажается, и когда вы запускаете вещи в 2.7, она пытается использовать библиотеки из python 3. Я решил это довольно просто, отредактировав скрипт scons.bat и установив путь к Python и дом Python в сценарий.

Здесь показаны изменения.

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.

...