2015-09-29 6 views
0

Я не уверен, правильно ли указано «внешняя переменная среды». Это проблема с nooby, но я не смог найти в документации на scons. Я пытаюсь добавить путь по:Получение значения переменной внешней среды

env = Environment (CPPPATH = ['${PETSC_DIR}/include']) 

но SCons признают ценность ${PETSC_DIR}, как пустой. Я проверил значение с echo в оболочке и дал правильное значение. Как я могу заставить scons признать его ценность?

+0

возможно дубликат [как установить переменные окружения в питоном скрипте] (http://stackoverflow.com/questions/16143971/how-to- set-environment-variable-in-python-script) – dirkbaechle

ответ

1

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"]) 
+0

Вы имели в виду env = {'PATH': os.environ ('PATH')}? – bdbaddog

+0

Спасибо за указатель ... для подбора переменной во время расширения CPPPATH она должна быть членом самой сборки. Я исправлю свой ответ соответственно. – dirkbaechle

Смежные вопросы