使用 .pth 文件

2023-11-29

我正在尝试使模块在我没有全局写入权限的系统上可发现site-packages目录,并且不改变环境(PYTHONPATH)。我试图放置一个.pth文件与我正在执行的脚本位于同一目录中,但它似乎被忽略。例如,我创建了一个文件extras.pth包含以下内容:

N:\PythonExtras\lib\site-packages

但是以下脚本放置在同一目录中并运行,会打印False.

import sys
print r"N:\PythonExtras\lib\site-packages" in sys.paths

中唯一的目录sys.path我有写访问权限的是包含脚本的目录。是否有另一个(当前不存在)目录可以放置extras.pth被看到了吗?有更好的方法来解决这个问题吗?

我在 Windows 上使用 python 2.7。全部.pth我可以在这里找到的问题使用系统模块目录。

Edit:我已经找到了 Windows 每用户安装目录,位于%APPDATA%\Python\Python27\site-packages。我可以在那里放置一个模块,它将被导入,但是如果我放置一个.pth文件在那里,它没有任何作用。这真的不应该起作用吗,还是我做错了什么?


如中所述文档, 仅当 PTH 文件位于 site-packages 目录中时才会对其进行处理。 (更准确地说,如果它们位于“站点目录”中,则会对其进行处理,但“站点目录”本身是 Python 安装的全局设置,不依赖于当前目录或脚本所在的目录。)

如果包含您的脚本的目录已打开sys.path,你可以创建一个sitecustomize.py在该目录中。这将在 Python 启动时加载。里面sitecustomize.py, 你可以做:

import site
site.addsitedir('/some/dir/you/want/on/the/path')

这不仅会添加该目录,还会将其添加为“站点目录”,从而导致在那里处理 PTH 文件。如果您想创建自己的个人内容,这会很方便site-packages-类似目录。

如果您只需要向路径添加一两个目录,则可以更简单地执行此操作。只需创建一个小型 Python 库来操作sys.path,然后从脚本中导入该库。就像是:

# makepath.py
import sys
sys.path.append('/whatever/dir/you/want')

# script.py
import makepath

编辑:再次,根据文档,可能存在特定于站点的目录%APPDATA%\Python\PythonXY\site-packages(在 Windows 上)。您可以尝试这样做,如果实际上您具有对该文件的写访问权限(而不仅仅是您的脚本目录)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 .pth 文件 的相关文章

随机推荐