如何全局修改默认的PYTHONPATH(sys.path)?

如何全局修改默认的PYTHONPATH(sys.path)?

在 Ubuntu (10.10) 系统上,我有一个 Python 包,它会自行安装到/usr/local/lib/python2.6/site-packages/。这不包含在默认路径 (sys.path) 中。如何将此目录添加到路径中?

$PYTHONPATH当然,设置环境变量是一种解决方案,但我正在寻找一种更优雅的方式来做到这一点。例如easy_install,还将已安装的软件包放入其中,我的 sys.path 如下所示:

['', '/usr/local/lib/python2.6/dist-packages/keyring-0.5.1-py2.6.egg', 
'/usr/lib/python2.6', '/usr/lib/python2.6/plat-linux2', '/usr/lib/python2.6/lib-tk',  
'/usr/lib/python2.6/lib-old', '/usr/lib/python2.6/lib-dynload', 
'/usr/local/lib/python2.6/dist-packages', '/usr/lib/python2.6/dist-packages', 
'/usr/lib/python2.6/dist-packages/PIL', '/usr/lib/pymodules/python2.6', 
'/usr/lib/pymodules/python2.6/gtk-2.0']

因此该路径显然不是 Python 二进制文件中内置的默认路径。

是否有一个配置文件包含上述条目?或者可以通过哪些方式修改它?

答案1

站点模块文档修改 Python 的搜索路径看起来就是你要找的东西。

据我了解,这些条目由以下人员添加sys.path

  • /usr/lib/python2.6/site.py
  • /usr/lib/python2.6/dist-packages/site.py
    (将 2.6 更改为您的 Python 版本。)

改变它的最简单的方法是添加一个/usr/local/lib/python2.6/dist-packages/site-packages.pth包含的文件../site-packages

或者,也许您可​​以教该包使用site.getsitepackages()

答案2

总结一下python修改路径的发现,有两种方法可以做到。

  • .pth文件
  • PYTHONPATH

任何 .pth在默认路径上找到的文件(见下文)将把其内容包含在内sys.path。所述格式.pth文件很简单:每行一个(文件夹)路径。令人惊讶的是,路径可以是绝对路径,也可以是相对于.pth文件。

默认路径是解释器所在的位置,通常<some-prefix>/lib/python<version>/site-packages是。<some-prefix>/usr/

PYTHONPATH是操作系统的环境变量。在 unix 系统上,您可以通过 列出它们env。此类变量的全局修改是通过.sh/etc/profile.d/正如@TestUser16418 所述,文件夹内的脚本。

答案3

您可以创建一个名为的新文件,/etc/profile.d/local_python.sh其内容为

PYTHONPATH="/usr/local/lib/python2.6/site-packages/":"${PYTHONPATH}"
export PYTHONPATH

这将为PYTHONPATH系统上所有登录用户设置变量。

答案4

例如,如果您想导入suds作为文件提供的模块.egg

egg_path = '/home/shahid/suds_2.4.egg'

sys.path.append(egg_path)

import suds
# ... rest of code

相关内容