5

我在 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”文件夹中。将此设置为路径确实可以解决问题。现在,当尝试编译带有消息“cl”的简单 C++ 文件时出现了一个新问题,该文件不被识别为内部或外部命令。(Windows 7 64 位)。请任何想法可能会有所帮助。

4

3 回答 3

6

您是否使用SCons Windows 安装程序安装它?它应该为您设置一切。

根据SCons 安装说明,SCons 应该安装在这里:

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

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

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

于 2013-02-16T19:44:01.403 回答
1

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

于 2013-02-26T19:49:37.277 回答
0

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

同样的问题,可能是因为

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

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

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

  1. 安装python setup.py install
  2. 转到您的 Python 安装目录
  3. 将以下文件中的一个(或两个)放在子文件夹Scripts中:

    • scons.bat如果你从cmd运行 scons
    • scons如果你从MsysCygwin运行 scons

我已经把这两个脚本的代码放在下面(这.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
于 2018-02-01T15:45:48.603 回答