– 特定于站点的配置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禁用。如果导入失败并带有ImportErrororits子类异常,异常的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 – 每个用户的站点包目录
评论被关闭。