SCons не импортирует переменные оболочки по умолчанию, чтобы гарантировать повторяемость сборки, не влияя на среду сборки с тем, что вы, возможно, определили в своем терминале/оболочке. Однако, вы можете решить, импортировать эти переменные ... и это показано в ответ на # 1 нашего «наиболее часто задаваемые вопросы» спросил у https://bitbucket.org/scons/scons/wiki/FrequentlyAskedQuestions:
import os
env = Environment(ENV = os.environ)
для импорта всех вещей, или
path = ['/bin', '/usr/bin', '/path/to/other/compiler/bin']
env = Environment(ENV = {'PATH' : path})
для одной переменной, например PATH
в этом примере. Вышеприведенные фрагменты кода сделают все ваши переменные оболочки (или только PATH) доступными в среде сборки, как определено переменной ENV
. Чтобы ваша пользовательская переменная оболочки была заменена в определении CPPPATH, она должна существовать в самой среде SCons. Вы можете рассматривать это как словарь, так что должно работать:
import os
env = Environment(ENV = os.environ)
env['PETSC_DIR'] = os.environ.get('PETSC_DIR','default')
env.Append(CPPPATH=["$PETSC_DIR/include"])
возможно дубликат [как установить переменные окружения в питоном скрипте] (http://stackoverflow.com/questions/16143971/how-to- set-environment-variable-in-python-script) – dirkbaechle