Running Scons 2.2.0 for Windows 7 cmd

I installed SCons 2.2.0 in Python 2.7 on Windows 7. When I run "scons" from cmd, I get the error message "scons not recognized and internal or external command" How can I solve this problem?


The problem is that scons-2.2.0-setup.exe does not set the path on the system. The scons.bat and scons-2.2.0.bat files are located in the "C: / Python27 / Scripts" folder. Setting this path solves this problem. Now a new problem arises when trying to compile a simple C ++ file with the message "cl" is not recognized as an internal or external command. (Windows 7 64 bit). Please any ideas could be helpful.

+5
source share
3 answers

Windows?. .

SCons, SCons:

  • C:\Python25\Scripts
  • C:\Python25\SCons

c:\Python25 pythong 2.7.

, , python script. , cmd, .

+6

cl, Visual Studio, scons, .bat Python. , .

+1

2 (3.0.0 3.0.1).

, ,

  • Windows Python C:/Program Files... Python 3.x ( )

  • setup.py .

Anyway, I came up with the following solution.

  • Install with python setup.py install
  • Go to Python installation directory
  • put either (or both) of the following files in the Scripts subfolder :

    • scons.batif you run scons from cmd
    • sconsif you run scons from Msys or Cygwin

I put the code of these 2 scripts below ( .batwas part of the source, but .shwas inspired).

File <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 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%

File <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
0
source

All Articles