Поскольку отсутствует Минимальный воспроизводимый пример , я просто покажу вам рабочий пример и, возможно, вы сможете сравнить его с настройкой вашей среды.
Вот пример SConstruct:
import os, stat
# arbitrary location for fake compiler
f = open("/tmp/comp.sh", "w")
f.write("""echo "COMPILER COMPILING!"
cat $1 > out.ext
echo " is compiled" >> out.ext""")
f.close()
# make sure its executable
os.chmod("/tmp/comp.sh", stat.S_IRWXU)
# fake input file
f = open("out.in", "w")
f.write("code")
f.close()
# add arbitrary path to environment
os.environ['PATH'] = os.environ['PATH'] + ":/tmp"
env = Environment(ENV = os.environ)
#env = Environment() # not setting the ENV causes sh: 1: comp.sh: not found
env.Command('out.ext', 'out.in', 'comp.sh $SOURCE')
Вот вывод, который я получаю, если я использую строку env = Environment(ENV = os.environ)
scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...
comp.sh out.in
COMPILER COMPILING!
scons: done building targets.
Вот вывод, который я получаю, если я раскомментирую и использую строку env = Environment()
и комментарий из предыдущей строки
scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...
comp.sh out.in
sh: 1: comp.sh: not found
scons: *** [out.ext] Error 127
scons: building terminated because of errors.