在Windows 7 cmd上运行Scons 2.2.0

时间:2013-02-16 18:35:22

标签: windows cmd scons

我在Windows 7上的Python 2.7中安装了SCons 2.2.0。当从cmd运行“scons”时,我收到错误消息“scons无法识别,内部或外部命令”我该如何解决?


问题是scons-2.2.0-setup.exe没有在系统中设置路径。 scons.bat和scons-2.2.0.bat都可以在“C:/ Python27 / Scripts”文件夹中找到。将此设置为路径确实可以解决问题。现在,当尝试编译一个简单的C ++文件并且消息“cl”未被识别为内部或外部命令时,会出现一个新问题。 (Windows 7 64位)。请任何想法可能会有所帮助。

3 个答案:

答案 0 :(得分:6)

您是否使用SCons windows installer安装了它?它应该为你设置一切。

根据SCons installation instructions,SCons应安装在此处:

  • C:\ Python25 \脚本
  • C:\ Python25 \ scons的

在您的情况下,将c:\Python25替换为pythong 2.7安装位置。

此外,请确保SCons python脚本在您的路径中。您可能必须重新启动cmd才能使路径更改生效。

答案 1 :(得分:1)

要使用cl,您需要使用Visual Studio命令行,然后从那里运行scons,在Python安装中运行.bat文件和scripts文件夹。将脚本放在您的路径中应该像我最近自己做的那样解决它。

答案 2 :(得分:0)

我安装了2个最新版本(3.0.0和3.0.1)。

同样的问题,也许是因为

  1. Windows安装程序正在 C:/ Program Files ... 中寻找 Python 的安装,它只能找到 Python 3。 x (不兼容)

  2. setup.py有一个小问题。

  3. 无论如何,我提出了以下解决方案。

    1. 使用python setup.py install
    2. 安装
    3. 转到Python安装目录
    4. 将以下文件中的任何一个(或两个)放入子文件夹脚本

        如果您从 cmd 运行scons,则
      • scons.bat
      • scons如果您从 Msys Cygwin
      • 运行scons
    5. 我已将这两个脚本的代码放在下面(.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" $@
      SCONS_ERRORLEVEL=$?
      
      # Check error code
      if [ SCONS_ERRORLEVEL == 9009 ]; then
          echo "You do not have python in your PATH"
      fi
      
      # End
      exit $SCONS_ERRORLEVEL