我正在尝试使模块在我没有全局写入权限的系统上可发现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(使用前将#替换为@)