![](/img/trans.png)
[英]python os.getenv() don't see any of my custom variables from Jupyter notebook (os x el capitan)
[英]python - os.getenv and os.environ don't see environment variables of my bash shell
我在 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 和 Z-Shell,请确保您已在正确的 shell 中导出环境,并且这对 python 可用。
如果您使用 VSCode 并将默认值 shell 设置为 Z shell,那么可以理解,如果 .zshrc 中不存在.bashrc
中的变量,则.zshrc
解释器将看不到它们。 解决方案是在两个 shell 中export
变量或将默认值 shell 更改为具有必要变量的那个。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.