首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用.pth文件

使用.pth文件
EN

Stack Overflow用户
提问于 2013-03-04 18:37:07
回答 2查看 108.1K关注 0票数 57

我正在努力使一个模块在没有对全局site-packages目录的写入访问权的系统上被发现,并且不需要更改环境(PYTHONPATH)。我试图将一个.pth文件放置在与我正在执行的脚本相同的目录中,但它似乎被忽略了。例如,我创建了一个具有以下内容的文件extras.pth

代码语言:javascript
复制
N:\PythonExtras\lib\site-packages

但是下面的脚本(放置并运行在同一个目录中)打印False

代码语言:javascript
复制
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文件放在那里,它就没有效果了。这真的不应该起作用,还是我做错了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-04 19:06:13

正如在the documentation中所描述的,PTH文件只有在站点包目录中才会被处理。(更准确地说,如果它们位于“站点目录”中,则会进行处理,但是“站点目录”本身是Python安装的全局设置,不依赖于当前目录或脚本所在的目录。)

如果包含脚本的目录位于sys.path上,则可以在该目录中创建sitecustomize.py。这将在Python启动时加载。在sitecustomize.py内部,您可以这样做:

代码语言:javascript
复制
import site
site.addsitedir('/some/dir/you/want/on/the/path')

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

如果您只需要向路径添加一个或两个目录,您可以更简单地这样做。只需创建一个操作sys.path的微小Python库,然后从脚本中导入该库。类似于:

代码语言:javascript
复制
# 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上)。您可以尝试这样做,如果实际上您可以对其进行写入访问(而不仅仅是对您的脚本目录)。

票数 72
EN

Stack Overflow用户

发布于 2019-01-05 19:14:04

您可以在已经在.pth中的目录中创建一个sys.path (path)文件,这样就可以将它包含在/

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15208615

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档