我在ubuntu 13.04,bash,python2.7.4
解释器看不到我设置的变量。
以下是一个例子:
$ echo $A
5
$ python -c 'import os; print os.getenv( "A" )'
None
$ python -c 'import os; print os.environ[ "A" ]'
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: 'A'
但是PATH
变量的一切正常:
$ echo $PATH
/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
$ python -c 'import os; print os.getenv("PATH")'
/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
它注意到PATH
:
$ PATH="/home/alex/tests/:$PATH"
$ echo $PATH
/home/alex/tests/:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
$ python -c 'import os; print os.getenv("PATH")'
/home/alex/tests/:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
可能出现什么问题?
PS使用$PYTHONPATH
时出现问题:
$ python -c 'import os; print os.getenv("PYTHONPATH")'
None
答案 0 :(得分:76)
啊哈!解决方案很简单!
我用普通$ A=5
命令设置变量;当你使用$ export B="kkk"
时,一切都很好。
environment
environment
传递给shell的子进程。普通$ A="kkk"
只是在shell中创建变量,而不对environment
做任何事情。
从shell调用的解释器从父级获取environment
- shell。所以变量应该先导入environment
。
答案 1 :(得分:6)
这些变量(bash术语中的参数)不是 environment 变量。您想使用export
或declare -x
将它们导出到环境中。请参阅bash documentation on environment。