【问题标题】:Python script running from SCONS cannot access environment variables从 SCONS 运行的 Python 脚本无法访问环境变量
【发布时间】:2017-11-09 22:14:18
【问题描述】:

在我的 scons 脚本中,我执行了另一个 python 脚本:

fs = env.Command('fs', None, 'python updatefs.py')
AlwaysBuild(fs)
Depends(fs,  main)

在 python 脚本中我试图访问一个环境变量:

import os
mode = os.environ['PROC_MODE']

该变量先前已在 shell 中设置:

export PROC_MODE='some_mode'

Python 抱怨:

KeyError: 'PROC_MODE'

将环境传播到外部脚本的正确方法是什么?

【问题讨论】:

  • 作为一种解决方法,我现在将此变量作为参数传递给脚本,但恕我直言,这是一种丑陋的方法
  • 我怀疑 env.Command 正在创建另一个 shell 实例。如果您有两个 shell 实例(在 py 之外),它们可以访问彼此的环境变量吗?

标签: python environment-variables scons


【解决方案1】:

常见问题解答中对此进行了简单介绍:

FAQ

基本上,SCons 构建了一组干净的可重现环境变量,因此任何用户环境的差异都不会破坏构建。

所以如果你想从你的 shell 中传播一个特定的变量,你可以明确地这样做:

env['ENV']['MY_VARIABLE']=os.environ['MY_VARIABLE']

如果您想传播所有环境变量,您可以这样做:

env['ENV'] = os.environ

env 是你的 Environment()

【讨论】:

  • 我已经看过所有这些帖子和常见问题解答,但是我仍然不太清楚如何从 scons 到外部脚本。谢谢。它有效。
猜你喜欢
  • 2010-11-07
  • 1970-01-01
  • 2019-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-16
  • 2017-06-26
  • 2023-04-11
相关资源
最近更新 更多