在 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