os.environ не показывает некоторые переменные - PullRequest
4 голосов
/ 18 августа 2011

У меня есть переменная окружения, которую я установил (на Centos 6), используя profile.d, следующим образом:

[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/

Но когда я получаю доступ к этому с помощью 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

Я даже пытался использовать библиотеку ctypes с такими же результатами:

>>> os.getenv('TNT_SERVER_URL')
>>> from ctypes import CDLL, c_char_p
>>> getenv = CDLL('libc.so.6').getenv
>>> getenv('TNT_SERVER_URL')
0
>>>

Но другие переменные проходят очень хорошо ...

os.environ {'SSH_ASKPASS': '/ usr / libexec / openssh / gnome-ssh-askpass', 'LESSOPEN': '| /usr/bin/lesspipe.sh% s', 'SSH_CLIENT': '139.126.176.137 56535 22', 'SELINUX_USE_CURRENT_RANGE': ',' LOGNAME ':' bankap ',' USER ':'bankap', 'QTDIR': '/usr/lib64/qt-3.3', 'PATH': '/usr/lib64/qt-3.3/bin:/usr/local/bin:/bin:/usr/bin:/ usr / local / sbin: / usr / sbin: / sbin: / home / bankap / bin ',

У кого-нибудь есть идеи?Я никогда не видел этого раньше!

1 Ответ

8 голосов
/ 18 августа 2011

У вас проблема с цитированием:

изменение

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

в

python -c 'import os;os.environ.get("TNT_SERVER_URL")'
                                    ^              ^

Вам также (вероятно) необходимо export переменная:

export TNT_SERVER_URL; python -c 'import os;os.environ.get("TNT_SERVER_URL")'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...