环境variables在Python中不可用

关于环境variables,我有一个非常有趣的问题,并且使用Googlesearch并没有显示出任何有意义的结果:

$ echo $BUCKET && python -c "import os; print os.environ['BUCKET']" mule-uploader-demo Traceback (most recent call last): File "<string>", line 1, in <module> File "/usr/lib/python2.7/UserDict.py", line 23, in __getitem__ raise KeyError(key) KeyError: 'BUCKET' 

所以我有一个在bash中可用的环境variables,但不是在python中。 这怎么可能发生,我该如何解决? 这里是一些额外的细节:

  • 环境variables通过source envvars.sh命令设置
  • envvars.sh文件仅包含如下所示的行: KEY=value
  • 我已经在bash和zsh中转载了这个
  • 如果我做一个export BUCKET=$BUCKET ,它的工作

这与bash中的variables作用域有关。 export使您的variables可用于subprocess,请参阅:

 → export BUCKET=foo → env | grep BUCKET 80:BUCKET=foo → PAIL=bar → env | grep PAIL # no output → python -c "import os; print os.environ['BUCKET']" foo → python -c "import os; print os.environ['PAIL']" Traceback (most recent call last): File "<string>", line 1, in <module> File "...", line 23, in __getitem__ raise KeyError(key) KeyError: 'PAIL' → CAN=baz python -c "import os; print os.environ['CAN']" baz 

所以在一个孩子的过程中, PAIL是失败的。