如何在python脚本中设置环境变量

时间:2013-04-22 09:43:55

标签: python scons

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

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

为此我们有2个文件。

  • Config.py
  • Sconstruct

Config.py包含所有变量,例如Include目录,CFLAGS,CPPDEFINES等。所以,我们可以设置一些变量。我需要在Sconstruct文件中使用这些变量。在config.py中,我设置了一个如下所示的变量

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

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

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

但我收到的错误如未定义变量SCONS_INC。

怎么做?

2 个答案:

答案 0 :(得分:3)

默认情况下,SCons不使用调用的环境,这是为了确保无论环境具有哪种配置,都可以重现构建。

环境变量存储在密钥ENV下的scons环境中,因此您可以访问如下的常规环境变量:

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

我理解您的问题,就像您需要在SCons中使用python脚本中设置的变量一样。为此,您需要使用组合描述的两种方法来传输它们。

env = Enviroment()
python_variable = os.environ['SomeVariable']
env['ENV']['SomeVariable'] = python_variable
但是,我可能会推荐其他控制构建的方法,因此您不必为传输环境变量而烦恼。恕我直言使用参数更简单。参数只是一个由scons调用生成的字典,所以当你说:

scons -D some_argument=blob

你可以简单地得到那个论点:

some_variable = ARGUMENTS["some_argument"]

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

答案 1 :(得分:0)

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

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