– 特定于站点的配置hook-Python Runtime Services(Python教程)(参考资料)
site
– 特定于站点的配置挂钩
初始化期间自动导入该模块.自动导入可以是抑制使用解释器的-S
选项.
导入此模块会将特定于站点的路径附加到模块搜索pathand中添加一些内置,除非使用了-S
。在这种情况下,可以安全地导入此模块,而不会自动修改模块搜索路径或内置增加。要明确触发通常的站点特定添加,请调用site.main()
function.
更改版本3.3:导入用于触发路径操作的模块,即使使用-S
.
首先从头部和尾部构建最多四个目录。对于头部,它使用sys.prefix
和sys.exec_prefix
;空头颅跳过。对于尾部,它使用空字符串然后lib/site-packages
(在Windows上)或lib/pythonX.Y/site-packages
(在Unix和Macintosh上)。对于每个不同的头尾组合,它会看到它是否指向现有目录,如果是,则将其添加到sys.path
并检查新添加的配置文件路径.
更改版本3.5:支持“site-python”目录已被删除.
如果名为“pyvenv.cfg”的文件存在于sys.executable,sys.prefix和sys之上的一个目录中。exec_prefix设置为该目录,并且还检查site-packages(sys.base_prefix和sys.base_exec_prefix将始终是Python安装的“真实”前缀)。如果“pyvenv.cfg”(引导程序配置文件)包含设置为“false”以外的任何内容的键“include-system-site-packages”(不区分大小写),则仍会为site-packages搜索系统级前缀;否则他们不会.
路径配置文件是一个名称格式为name.pth
并存在于上述四个目录之一;它的内容是要添加到sys.path
的附加项(每行一个)。不存在的项目永远不会添加到sys.path
,也不会检查该项目是指参考文件而不是文件。没有项目添加到sys.path
更多。以#
开头的空行和行被跳过。以import
开头的行(后跟空格或制表符)执行.
例如,假设sys.prefix
和sys.exec_prefix
设置为/usr/local
。然后将Python X.Y库安装在/usr/local/lib/pythonX.Y
中。假设这个有一个子目录/usr/local/lib/pythonX.Y/site-packages
和三个子目录,foo
, bar
和spam
,以及两个路径配置文件,foo.pth
和bar.pth
。假设foo.pth
包含以下内容:
# foo package configurationfoobarbletch
和bar.pth
包含:
# bar package configurationbar
然后将以下特定于版本的目录添加到sys.path
,in这个顺序:
/usr/local/lib/pythonX.Y/site-packages/bar/usr/local/lib/pythonX.Y/site-packages/foo
注意bletch
被省略,因为它不存在;bar
目录位于foo
目录之前,因为bar.pth
在foo.pth
之前以字母顺序排列;和spam
由于在路径配置文件中没有提到,因此省略了它.
在这些路径操作之后,尝试导入名为sitecustomize
的模块,该模块可以执行任意特定于站点的自定义。它是通常由site–packagesdirectory中的系统管理员创建。如果导入失败并带有ImportError
或其子类的异常,并且异常的name
属性等于"sitecustomize"
,则会被静默忽略。如果在没有输出流的情况下启动Python,就像Windows上的pythonw.exe
(默认情况下用于启动IDLE),将忽略来自sitecustomize
的尝试输出。任何其他异常都会导致进程的无声且可能是神秘的失败.
之后,尝试导入名为usercustomize
的模块,该模块可以执行任意特定于用户的自定义,如果ENABLE_USER_SITE
是真的。此文件旨在在用户site-packages目录(见下文)中创建,该目录是sys.path
的一部分,除非由-s
禁用。如果导入失败并带有ImportError
orits子类异常,异常的name
属性等于"usercustomize"
,它被默认忽略.
注意对于某些非Unix系统,sys.prefix
和sys.exec_prefix
isempty,跳过路径操作;但仍然尝试导入sitecustomize
和usercustomize
.
Readline configuration
在支持readline
的系统上,这个模块也会导入和配置rlcompleter
模块,如果在交互模式中启动Python而没有-S
选项。默认行为是启用tab-completion和使用~/.python_history
作为历史保存文件。要禁用它,请删除(或覆盖)sys.__interactivehook__
或sitecustomize
模块中的usercustomize
属性或PYTHONSTARTUP
文件
更改版本3.4:自动激活rlcompleter和历史记录
模块内容
site.
PREFIXES
-
网站包目录的前缀列表
site.
ENABLE_USER_SITE
-
显示用户site-packages目录的状态。
True
意味着它被启用并被添加到sys.path
.False
表示已被用户请求禁用(使用-s
或PYTHONNOUSERSITE
)。None
表示它因安全原因(用户或组ID与有效ID不匹配)或由管理员而被禁用.
site.
USER_SITE
-
对运行Python的用户site-packages的路径。可以
None
如果getusersitepackages()
尚未被召唤。对于UNIX和非框架MacOS X构建,默认值为~/.local/lib/pythonX.Y/site-packages
,对于Macframework构建,默认值为~/Library/Python/X.Y/lib/python/site-packages
,在Windows上为%APPDATA%\Python\PythonXY\site-packages
。该目录是一个站点目录,这意味着.pth
中的文件将被处理.
site.
USER_BASE
-
Path到用户站点包的基本目录。可以
None
如果getuserbase()
尚未被召唤。UNIX和Mac OS X非框架版本的默认值为~/.local
,Mac框架版本的默认值为~/Library/Python/X.Y
,Windows的默认值为%APPDATA%\Python
。Distutils使用此值来编写脚本,数据文件,Python模块等的安装目录。对于用户安装方案。另见PYTHONUSERBASE
.
site.
main
()-
将所有标准站点特定目录添加到模块搜索路径。导入此模块时会自动调用此函数,除非Python解释器是以
-S
标志启动的.更改版本3.3:此函数曾被调用无条件地
site.
addsitedir
(sitedir, known_paths=None)-
为sys.path添加目录并处理其
.pth
文件。通常用在sitecustomize
或usercustomize
(见上文).
site.
getsitepackages
()-
返回一个包含所有全局site-packages目录的列表.
新版本3.2.
site.
getuserbase
()-
返回用户基目录的路径,
USER_BASE
。如果还没有初始化,这个功能也会设置它,尊重PYTHONUSERBASE
.新版本3.2.
site.
getusersitepackages
()-
返回路径用户特定的site-packages目录,
USER_SITE
。如果还没有初始化,这个功能也会设置,尊重PYTHONNOUSERSITE
和USER_BASE
.版本3.2.
// site
模块也提供了一种方式从命令行获取用户目录:
$ python3 -m site --user-site/home/user/.local/lib/python3.3/site-packages
如果没有参数调用它,它将打印sys.path
在标准输出上,后跟USER_BASE
以及目录是否存在,那么USER_SITE
,最后是ENABLE_USER_SITE
.
--user-base
-
的值打印到用户基目录的路径.
如果给出了两个选项,将打印用户基础和用户站点(始终按此顺序),由os.pathsep
.
分隔。如果给出任何选项,脚本将以以下值之一退出:0
如果启用了用户site–packages目录,1
如果用户已禁用,2
如果出于安全原因或由管理员禁用,如果出现错误则禁用大于2
也可以看看
PEP 370 – 每个用户的站点包目录
评论被关闭。