使用Python.pth文件假定无法访问站点包目录
在我当前的系统中,所有目录(如使用Python.pth文件假定无法访问站点包目录,python,path,packages,sys.path,Python,Path,Packages,Sys.path,在我当前的系统中,所有目录(如.local/lib/python2.7/site packages)都在全局管理员控制下,并在用户之间进行标准化 然而,我想添加一个我自己的目录集合,在启动时将其放入PYTHONPATH,最好是以一种易于管理的方式,如 有没有一种方法可以通过普通的Python通道实现这一点,但不需要对Python查找路径元素的标准位置进行任何更改 我特别想知道是否有一种方法可以将sitecustomize.py或usercustomize.py这样的文件放在PYTHONPATH中
.local/lib/python2.7/site packages
)都在全局管理员控制下,并在用户之间进行标准化
然而,我想添加一个我自己的目录集合,在启动时将其放入PYTHONPATH,最好是以一种易于管理的方式,如
有没有一种方法可以通过普通的Python通道实现这一点,但不需要对Python查找路径元素的标准位置进行任何更改
我特别想知道是否有一种方法可以将sitecustomize.py
或usercustomize.py
这样的文件放在PYTHONPATH中的文件夹中的任何位置,并期望它们会自动执行?(而不是通过将此类文件放在像网站包
这样的管理目录中来实现这种行为,这正是我想要避免的。)
我的目标是将一个文本文件path.pth
放在某个目录中,比如/home/My_configs/python_stuff/
,然后只需将该目录通过.bashrc
文件放在PYTHONPATH中即可。然后,至少,我只手动维护一个要添加的路径,通过更改.pth
文件中的内容,可以更容易地控制版本或参数化加载的内容
如果没有管理限制,我可以在站点包中轻松地做到这一点,但我需要一个完全超出此范围的解决方案
在/.bashrc
中,我有:
export PYTHONPATH=/home/ems/python_paths/:$PYTHONPATH
在目录/home/ems/python\u paths/
中,我只有两个文件,sitecustomize.py
和paths.pth
(但我也尝试在那里添加一个\u init\uuuuuuuuuuuuuuuuuuuuuuuuuuu.py
,这(正如预期的那样)没有帮助)。这两个文件如下所示:
sitecustomize.py
import site
site.addsitedir("/home/ems/python_paths/")
路径。pth
/home/ems/ws/Research/Projects/python-util/src/util/
/home/ems/ws/Research/Projects/python-efficacy/src/efficacy/
path.pth
的内容正是过去在.bashrc
中直接导出的内容,例如,允许我从util.DataManager导入DataManager
作为顶级导入
但是在设置了上面的各种文件,在.bashrc
中将导出到PYTHONPATH
并获得一个新的终端后,我看到了以下内容:
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
ems@computer~$python
Enthound Python发行版——www.enthound.com
版本:7.3-2(64位)
Python 2.7.3 | EPD 7.3-2(64位)|(默认值,2012年4月11日,17:52:16)
linux2上的[GCC 4.1.2 20080704(Red Hat 4.1.2-44)]
键入“学分”、“演示”或“热情思考”以了解更多信息。
你好
>>>从util.DataManager导入DataManager
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
ImportError:没有名为util.DataManager的模块
专门针对每个用户站点包
目录的创建,以处理用户对系统范围站点包
没有管理员访问权限的情况
例如,在Unix(包括Mac OS)上,假设使用的是Python 3.6,可以创建以下目录并将.pth
文件放在其中
~/.local/lib/python3.6/site packages
您链接到的问题的答案已经说明了如何做到这一点。您需要将sitecustomize.py
放在Python路径的目录中,并让它使用addsitedit
将/some/other/dir
添加为站点dir,然后.pth
中的文件将起作用。您也可以使用。不,这不起作用。如果您阅读站点
文档,文件sitecustomize.py
或usercustomize.py
似乎需要显示在站点包
中,而不是路径上的“其他”文件夹中。它不会自动执行它们,除非它在一个特殊的地方找到它们,我想知道如何绕过它。是的,它做到了。正如这个答案和文档所说,Python只是导入sitecustomize,只要您的sitecustomize
位于Python路径上的任何位置,它就可以工作。这对我来说不起作用。我在.bashrc
中导出了/home/ely/configs/python\u path/
到PYTHONPATH
,我在那里有一个\uuuu init\uuuuuuuuuuuuuuuuuuuuuupy
文件,以及sitecustomize.py
(也尝试了usercustomize.py
),其中包含了添加我的.pth
文件的相关代码。如果我在执行此操作后获取.bashrc
,则启动时不会执行sitecustomize.py
文件。请编辑您的问题以显示sitecustomize.py
的内容和sys.path
的内容。另外,为什么您有\uuuu init\uuuu.py
?如果您想直接导入sitecustomize.py
(这是site
将要做的),您不希望这样做,这可能会让它感到困惑。