Python os.environ不';不显示一些变量

Python os.environ不';不显示一些变量,python,linux,Python,Linux,我使用profile.d设置了一个环境变量(在Centos 6上),如下所示: [bankap@tnt-integration-test ~]$ cat /etc/profile.d/tnt.sh TNT_SERVER_URL=http://tnt-integration-test:8000/ 当我登录时,我会看到变量: [bankap@tnt-integration-test ~]$ echo $TNT_SERVER_URL http://tnt-integration-test:8000/

我使用profile.d设置了一个环境变量(在Centos 6上),如下所示:

[bankap@tnt-integration-test ~]$ cat /etc/profile.d/tnt.sh
TNT_SERVER_URL=http://tnt-integration-test:8000/
当我登录时,我会看到变量:

[bankap@tnt-integration-test ~]$ echo $TNT_SERVER_URL
http://tnt-integration-test:8000/
export TNT_SERVER_URL; python -c 'import os;os.environ.get("TNT_SERVER_URL")'
但是当我使用Python访问这个东西时,环境变量不会显示

[bankap@tnt-integration-test ~]$ python -c 'import os;os.environ.get("TNT_SERVER_URL")'
Traceback (most recent call last):
  File "<string>", line 1, in <module>
NameError: name 'TNT_SERVER_URL' is not defined
但是其他的变量也很好的通过了

环境操作系统 {'SSH_ASKPASS':'/usr/libexec/openssh/gnome SSH ASKPASS','LESSOPEN':'|/usr/bin/lesspipe.sh%s','SSH_CLIENT':'139.126.176.137 56535 22','SELINUX_使用当前范围':'','LOGNAME':'bankap','USER':'bankap','QTDIR':'/usr/lib64/qt-3.3','PATH':'/usr/lib64/qt-3.3/bin:/usr/local bin:/usr/bin:/usr/bin:/usr/sbin:/usr/sbir/sbin:/usn/homen'


有人有什么想法吗?我以前从未见过这种情况!

您的报价有问题:

改变

python -c 'import os;os.environ.get('TNT_SERVER_URL')'
进入

您还(可能)需要导出变量:

[bankap@tnt-integration-test ~]$ echo $TNT_SERVER_URL
http://tnt-integration-test:8000/
export TNT_SERVER_URL; python -c 'import os;os.environ.get("TNT_SERVER_URL")'

该名称错误似乎表明您至少在第一个示例中遇到了引用问题;
TNT\u SERVER\u URL
被解释为变量名而不是字符串。您的引用是正确的,但这不是问题所在:[bankap@tnt-集成测试~]$python 2.6.5(r265:79063,2011年6月25日,08:36:25)[GCC 4.4.4 20100726(Red Hat 4.4.4-13)]在linux2上键入“帮助”、“版权”、“信用”或“许可证”以获取更多>>>导入操作系统>>>>操作系统环境[…键盘中断>>>操作系统环境['TNT_服务器URL']回溯(最近一次调用):文件“”,第1行,在文件“/usr/lib64/python2.6/UserDict.py”中,第22行,在getitem raise KeyError(键)中KeyError:'TNT_SERVER_URL'您是否尝试导出变量?如果您在运行Python之前只键入
export
,变量是否存在?没错!这就是问题所在!谢谢。我想我不明白“export”的用途。我想如果您可以在shell中回显变量,您应该可以通过os.environ获得它不,当您设置一个shell环境变量时,默认情况下它只在该shell中可见。它不能被子进程看到,就像在您的例子中的Python一样。您必须导出该变量才能使它对子进程可见。有关详细信息,请参阅此: