2013-04-22 97 views
0

我正在使用SCONS构建工具。
我无法使用在python脚本中初始化的环境变量。
如何在python脚本中设置环境变量

在我的项目中用户可以更改一些变量以使用编译器。

对于我们有2个文件。

  • Config.py
  • Sconstruct

Config.py是为一切都像变量包括目录,CFLAGS,CPPDEFINES等,所以,在这里我们可以设置一些变量。我需要在Sconstruct文件中使用这些变量。在config.py我设置了一个变量,如下所示

SCONS_INC = "Include files" 
os.environ["SCONS_INC"] = SCONS_INC 

我需要在Sconstruct文件中使用这些变量。代码是

env["CPPPATH"] = os.environ["SCONS_INC"] 

但是我收到一个错误,像未定义的变量SCONS_INC。

如何做到这一点?

+0

你在使用什么操作系统/环境?我在做Sconstruct文件中的 – 2013-04-22 09:47:17

+0

。 env =环境(ENV = os.environ) – 2013-04-22 09:49:23

+0

Windows/Linux/Mac等。 – 2013-04-22 09:55:47

回答

3

SCons的默认情况下不使用调用环境,这是为了确保您能重现构建无论哪个配置您的环境有。

的环境变量下的关键ENV存储在scons的环境中,所以你访问一般的环境变量是这样的:

env = Environment() 
variable = env['ENV']['SomeVariable'] 
env['ENV']['SomeVariable'] = SomeValue 

我明白你的问题,你好像需要使用内的python脚本设置变量SCons的。要做到这一点,你需要使用你描述的两种方法将它们转移。

env = Enviroment() 
python_variable = os.environ['SomeVariable'] 
env['ENV']['SomeVariable'] = python_variable 

我不过也许建议控制生成的其他方式,所以你不必去与传输环境变量的麻烦。恕我直言,使用参数更简单。这些参数只是由scons的的调用生成一个字典,所以当你说:

scons -D some_argument=blob 

你可以通过简单地得到这样的说法:

some_variable = ARGUMENTS["some_argument"] 

当然,我不知道为什么你需要环境变量,所以这可能与你完全无关。

+0

嗨感谢您的回答。我编辑了我的问题。 你能告诉我如何在Config.py中初始化变量 – 2013-04-22 11:36:12

0

我曾经有过类似的需求,编译器正在寻找一个没有设置的Env变量。我能解决这个问题如下:

env = Environment() 
env['ENV']['THE_VARIABLE'] = 'SomeValue' 
+0

我正在将Sconstruct文件中的编译器环境设置为 env =环境(ENV = os.environ) 与上述情况相同。 – 2013-04-22 10:55:43

+0

@SrinivasReddy我正在做的是设置没有已经存在的Env Vars。所以,我有效地将一个变量附加到环境中。 – Brady 2013-04-22 12:03:57

相关问题