如何在mac上设置系统变量?因为我无法使用python 3 os.getenv或os.environ获取系统变量

时间:2014-07-15 01:12:42

标签: python macos

我很确定我已将系统变量设置如下:

echo 'export TEST=/path/test' >> .bash_profile
echo 'export TEST=/path/test' >> .zshrc

可以从终端获取变量,如:

echo $TEST
#the '/path/test' was print out

但是我无法从python 3中获得它,如下所示:

TEST = os.getenv('TEST')

TEST = os.environ['TEST']

有谁知道为什么?任何线索将不胜感激

1 个答案:

答案 0 :(得分:1)

您似乎对 environment 变量与(如您所说) system 变量之间的区别感到困惑。当你运行

echo 'export TEST=/path/test' >> .bash_profile
echo 'export TEST=/path/test' >> .zshrc

您正在做的是设置 environment 变量。当您启动shell子系统时,操作系统会调用某些启动文件来为您的环境设置变量。如果你在Bash shell中,它将调用.profile,.bash_profile等。当你获得shell时,你在启动脚本中设置的任何变量都是为你的环境设置的。例如:

pswaminathan ~ $ export TEST=/path/test
pswaminathan ~ $ python3
Python 3.4.0 (default, Mar 24 2014, 00:31:02)
[GCC 4.2.1 Compatible Apple LLVM 5.1 (clang-503.0.38)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.getenv('TEST')
'/path/test'

$TEST此处未在系统级别设置。它是在环境级别设置的。它依赖于被设定;在您的情况下,通过.zshrc或.bash_profile文件。例如,如果您正在通过cron运行脚本,则可以在crontab中设置环境变量。或者,您可以在用于运行这些内容的shell脚本中设置envvars。那么你如何运行这个文件,你没有得到正确的环境变量?

也很好的参考:http://en.wikipedia.org/wiki/Environment_variable