linux上的python:PYTHONPATH可以设置的所有可能的地方是什么?

时间:2012-04-26 11:50:09

标签: python ubuntu pythonpath

我想清理我的PYTHONPATH。

我知道我将它附加在/home/me/.profile中,就像这样:

PYTHONPATH=/home/hoff/code/someproject/pythonmods:$PYTHONPATH
PYTHONPATH=/home/hoff/code/google_appengine/google/appengine/tools:$PYTHONPATH
export PYTHONPATH

但是我必须有其他地方附加PYTHONPATH,当我进入python解释器并查看sys.path时,还有各种其他目录。

我可以在哪里指定它们,即哪些可以附加PYTHONPATH(在linux / ubuntu上)的地方?

3 个答案:

答案 0 :(得分:3)

sys.pathPYTHONPATH不是一回事;前者包含后者。要找出PYTHONPATH的值,请在shell中执行echo $PYTHONPATH

文件/usr/{local/,}lib/pythonX.Y/dist-packages/site.py将更新sys.path,因此您可以导入使用apt-geteasy_installpip安装的软件包。卸载这些软件包会减少sys.path(虽然不是您的PYTHONPATH)。

答案 1 :(得分:1)

可以设置环境变量的任何地方。

进程继承其父环境,因此您可以在任何阶段修改它,无论是shell配置文件,shell命令行,您调用的任何中间脚本,python脚本(使用sys.path)还是它使用的任何库

答案 2 :(得分:1)

如前所述......它几乎可以设置在任何地方。我想看的几个地方(假设您的登录shell是典型的bash ......)

.bashrc
/etc/profile
Anything in /etc/profile.d/  (typically loaded from /etc/profile)
~/.bash_profile
~/.bash_login

来自man bash

  When bash is invoked as an interactive login shell, or as
  a non-interactive shell with the --login option,  it  first
  reads  and  executes commands from the file /etc/profile, 
  if that file exists.  After reading that file, it looks for
  ~/.bash_profile, ~/.bash_login, and ~/.profile

   When an interactive shell that is not a login shell is started,
   bash reads and executes commands from  ~/.bashrc,  if that
   file exists.