假设无法访问site-packages目录,使用Python .pth文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了假设无法访问site-packages目录,使用Python .pth文件相关的知识,希望对你有一定的参考价值。

在我当前的系统中,所有目录(如.local/lib/python2.7/site-packages)都受全局管理控制,并且跨用户标准化。

但是,我想添加一个我自己的目录集合,在启动时加入PYTHONPATH,最好是以一种易于管理的方式,如using a .pth file within a secondary site directory.

有没有办法通过普通的Python通道实现这一点,但是不需要对Python寻找路径元素的标准位置进行任何改变?

我特别想知道是否有办法只将sitecustomize.pyusercustomize.py这样的文件放在PYTHONPATH文件夹中的任何位置,并期望它们会自动执行? (而不是通过将这些文件放在像site-packages这样的管理目录中来获取此行为,这是我想要避免的。)

我的目标是将文本文件paths.pth放在某个目录中,例如/home/my_configs/python_stuff/,然后只需将该目录放在PYTHONPATH中,例如,一个.bashrc文件。然后,至少,我只手动维护一个要添加的路径,并且通过更改.pth文件中的内容,更容易进行版本控制或参数化加载的内容。

如果没有管理员限制,我可以在site-packages中轻松地做到这一点,但我需要一个完全不在其中的解决方案。

/.bashrc我有这个:

export PYTHONPATH=/home/ems/python_paths/:$PYTHONPATH

在目录/home/ems/python_paths/我只有两个文件,sitecustomize.pypaths.pth(但我也试过在那里添加一个__init__.py,这(正如预期的那样)没有帮助)。这两个文件看起来像这样:

site customize.朋友

import site
site.addsitedir("/home/ems/python_paths/")

paths.pth

/home/ems/ws/Research/Projects/python-util/src/util/
/home/ems/ws/Research/Projects/python-efficacy/src/efficacy/

paths.pth的内容正是以前在.bashrc中直接导出的内容,例如,允许我将from util.DataManager import DataManager作为顶级导入。

但是在设置了上面的各种文件之后,在exports中将PYTHONPATH评论为.bashrc,并获得一个新的终端,我看到:

ems@computer ~ $ python
Enthought Python Distribution -- www.enthought.com
Version: 7.3-2 (64-bit)

Python 2.7.3 |EPD 7.3-2 (64-bit)| (default, Apr 11 2012, 17:52:16)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-44)] on linux2
Type "credits", "demo" or "enthought" for more information.
Hello
>>> from util.DataManager import DataManager
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named util.DataManager
答案

PEP 370专门解决每用户site-packages目录的创建,以处理用户没有管理员访问系统范围site-packages的情况。

例如在Unix(包括Mac OS)上,并假设一个人正在使用Python 3.6,可以创建以下目录并将.pth文件放在那里

~/.local/lib/python3.6/site-packages

以上是关于假设无法访问site-packages目录,使用Python .pth文件的主要内容,如果未能解决你的问题,请参考以下文章

无法使用路径访问目录

无法访问 Red Hat Linux Server 中的 UI 组件

通过site-packages中安装的版本导入模块的开发版本

cvat启动成功之后无法访问

确定当前Python环境中的site-packages目录位置

pycharm下site-packages文件标记为红的问题;pycharm无法识别本地site-packages问题