我在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
这些变量(bash术语中的参数)不是环境变量。您希望使用
export
或declare -x
将它们导出到环境中。请参阅bash documentation on environment。啊哈!解决办法很简单!
我用简单的
$ A=5
命令设置变量;当您使用$ export B="kkk"
时,一切都很好。即because
export
使变量可用于子进程:environment
中environment
传递给shell的子进程。普通的
$ A="kkk"
只在shell中创建变量,而不使用environment
。从shell调用的解释器从父shell获得
environment
。所以实际上,变量应该在之前导出到environment
。相关问题 更多 >
编程相关推荐