环境变量不在Python解释器中

时间:2012-10-23 10:37:21

标签: python environment-variables

嗨,我只是碰到了一件奇怪的事情。

在我的.bashrc中看起来像这样:

PYTHONPATH=$PYTHONPATH:/home/pschu/ParaView-3.14.1-Build/Utilities/VTKPythonWrapping/site-packages:home/pschu/ParaView-3.14.1-Build/bin

ParaView_DIR=/home/pschu/ParaView-3.14.1-Build

LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/pschu/ParaView-3.14.1-Builds/bin

所以现在当我启动python解释器并输入以下内容时:

>>>os.environ['PYTHONPATH']
 Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
 File "/usr/lib64/python2.7/UserDict.py", line 23, in __getitem__
 raise KeyError(key)
KeyError: 'PYTHONPATH'

ParaView_DIR相同的错误,但LD_LIBRARY_PATH有额外的路径。

在shell中它们存在。

echo $PYTHONPATH
:/home/pschu/ParaView-3.14.1-Build/Utilities/VTKPythonWrapping/site-packages:home/pschu/ParaView-3.14.1-Build/bin

现在我做的时候

export PYTHONPATH=$PYTHONPATH

在我运行python解释器之前它可以工作。

发生了什么事?

2 个答案:

答案 0 :(得分:2)

这有效:

% PYTHONPATH=$PYTHONPATH:/tmp python

在Python中:

>>> import os
>>> os.environ["PYTHONPATH"]
':/tmp'

答案 1 :(得分:1)

您有export个变量吗?

export PYTHONPATH ParaView_DIR

LD_LIBRARY_PATH可能已经在您的其他一个启动文件中导出了。一旦变量被导出,它就会保持这种状态。

导出变量使其成为环境变量,如果你没有export那么它只是shell的本地变量而子进程没有得到副本。

如果您使用的是C-shell(通常由%提示符表示),则语法不同:

setenv PYTHONPATH $PYTHONPATH