我正在努力使一个模块在没有对全局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上使用python2.7。这里我可以找到的所有.pth问题都使用系统模块目录。
编辑:,我在%APPDATA%\Python\Python27\site-packages跟踪了每个用户的安装目录.我可以在那里放置一个模块,它将被导入,但是如果我把一个.pth文件放在那里,它就没有效果了。这真的不应该起作用,还是我做错了什么?
发布于 2013-03-04 19:06:13
正如在the documentation中所描述的,PTH文件只有在站点包目录中才会被处理。(更准确地说,如果它们位于“站点目录”中,则会进行处理,但是“站点目录”本身是Python安装的全局设置,不依赖于当前目录或脚本所在的目录。)
如果包含脚本的目录位于sys.path上,则可以在该目录中创建sitecustomize.py。这将在Python启动时加载。在sitecustomize.py内部,您可以这样做:
import site
site.addsitedir('/some/dir/you/want/on/the/path')这不仅会添加该目录,而且会将其添加为“站点目录”,从而导致在那里处理PTH文件。如果您想要创建自己的个人site-packages类目录,这是非常方便的。
如果您只需要向路径添加一个或两个目录,您可以更简单地这样做。只需创建一个操作sys.path的微小Python库,然后从脚本中导入该库。类似于:
# makepath.py
import sys
sys.path.append('/whatever/dir/you/want')
# script.py
import makepath编辑:根据the documentation的说法,在%APPDATA%\Python\PythonXY\site-packages中有可能出现一个特定于站点的目录(在%APPDATA%\Python\PythonXY\site-packages上)。您可以尝试这样做,如果实际上您可以对其进行写入访问(而不仅仅是对您的脚本目录)。
发布于 2019-01-05 19:14:04
您可以在已经在.pth中的目录中创建一个sys.path (path)文件,这样就可以将它包含在/
https://stackoverflow.com/questions/15208615
复制相似问题