2013-02-16 113 views
5

我在Windows 7上安裝了Python 2.7中的SCons 2.2.0。當從cmd運行「scons」時,我收到錯誤消息「scons無法識別,內部或外部命令」我該如何解決這個問題?在Windows 7 cmd上運行Scons 2.2.0


問題是scons-2.2.0-setup.exe沒有在系統中設置路徑。 scons.bat和scons-2.2.0.bat都可以在「C:/ Python27/Scripts」文件夾中找到。將其設置爲路徑確實可以解決問題。現在嘗試編譯時會出現一個新問題,一個帶有消息「cl」的簡單C++文件不會被識別爲內部或外部命令。 (Windows 7 64位)。請任何想法可能會有所幫助。

回答

6

你使用SCons windows installer安裝它?它應該爲你設置一切。

按照SCons installation instructions,使用SCons應該在這裏安裝:

  • C:\ Python25 \ Scripts中
  • C:\ Python25 \ scons的

在你的情況下,替換c:\Python25你的pythong 2.7安裝位置。

此外,請確保SCons python腳本在您的路徑。您可能必須重新啓動cmd才能使路徑的更改生效。

+0

從該網頁,我得到scons的scons的-2.2.0-SETUP.EXE for Windows和它從來沒有設置路徑爲我和我無法找到特定的scons可執行文件的路徑! – Amani 2013-02-16 20:12:16

+0

鏈接不起作用(再)。這是通用下載頁面:http://www.scons.org/download.php – Geier 2014-05-01 09:04:06

1

要使用CL,您需要使用Visual Studio命令行,然後從那裏運行scons,在Python安裝中運行它的.bat文件和腳本文件夾。把腳本放在你的路徑上應該可以解決它,因爲我最近自己做了這個。

0

我安裝了2個最新版本(3.0.0和3.0.1)。

同樣的問題,也許是因爲

  1. Windows安裝程序正在尋找的安裝Python的C:/ Program Files文件...它只能發現Python 3.x都有 (這是不兼容的)

  2. setup.py有一個小問題。

無論如何,我帶來了以下解決方案。

  1. python setup.py install
  2. 轉到安裝到你的Python安裝目錄
  3. 在子文件夾把下面的文件,無論(或兩者)腳本

    • scons.bat如果運行scons的cmd
    • scons如果從MSYS運行scons的Cygwin的

我已經把這些2個腳本的代碼如下(在.bat是將源代碼的一部分,.sh已經從它的啓發)。

文件<Python_dir>/Scripts/scons.bat

@REM Copyright (c) 2001 - 2017 The SCons Foundation 
@REM src/script/scons.bat rel_3.0.0:4395:8972f6a2f699 2017/09/18 12:59:24 bdbaddog 
@echo off 
set SCONS_ERRORLEVEL= 
if "%OS%" == "Windows_NT" goto WinNT 

@REM for 9x/Me you better not have more than 9 args 
python -c "from os.path import join; import sys; sys.path = [ join(sys.prefix, 'Lib', 'site-packages', 'scons-3.0.0'), join(sys.prefix, 'Lib', 'site-packages', 'scons'), join(sys.prefix, 'scons-3.0.0'), join(sys.prefix, 'scons')] + sys.path; import SCons.Script; SCons.Script.main()" %1 %2 %3 %4 %5 %6 %7 %8 %9 
@REM no way to set exit status of this script for 9x/Me 
goto endscons 

@REM Credit where credit is due: we return the exit code despite our 
@REM use of setlocal+endlocal using a technique from Bear's Journal: 
@REM http://code-bear.com/bearlog/2007/06/01/getting-the-exit-code-from-a-batch-file-that-is-run-from-a-python-program/ 

:WinNT 
setlocal 
@REM ensure the script will be executed with the Python it was installed for 
set path=%~dp0;%~dp0..;%path% 
@REM try the script named as the .bat file in current dir, then in Scripts subdir 
set scriptname=%~dp0%~n0.py 
if not exist "%scriptname%" set scriptname=%~dp0Scripts\%~n0.py 
python "%scriptname%" %* 
endlocal & set SCONS_ERRORLEVEL=%ERRORLEVEL% 

if NOT "%COMSPEC%" == "%SystemRoot%\system32\cmd.exe" goto returncode 
if errorlevel 9009 echo you do not have python in your PATH 
goto endscons 

:returncode 
exit /B %SCONS_ERRORLEVEL% 

:endscons 
call :returncode %SCONS_ERRORLEVEL% 

文件<Python_dir>/Scripts/scons

#!/bin/bash 

# Script to launch scons from MSys or Cygwin 
# Inspired by scons.bat delivered with SCons 

# Ensure the script will be executed with the Python it was installed for 
BASEDIR=$(dirname "$0") 
PATH="$BASEDIR:$BASEDIR/..:$PATH" 

# Try the script named as the .bat file in current dir, then in Scripts subdir 
BASENAME=$(basename "$0") 
SCRIPT=${BASENAME%.*} 
SCRIPTNAME="$BASEDIR/$SCRIPT.py" 
if ! [ -f "$SCRIPTNAME" ]; then 
    SCRIPTNAME="$BASEDIR/Scripts/$SCRIPT.py" 
fi 

# Run 
python "$SCRIPTNAME" [email protected] 
SCONS_ERRORLEVEL=$? 

# Check error code 
if [ SCONS_ERRORLEVEL == 9009 ]; then 
    echo "You do not have python in your PATH" 
fi 

# End 
exit $SCONS_ERRORLEVEL