非常教程

Python参考手册

运行 | Runtime

site

源代码: Lib / site.py

该模块在初始化期间自动导入。自动导入可以使用解释器的-S选项来抑制。

导入此模块会将特定于站点的路径附加到模块搜索路径并添加一些内置函数。

它首先从头部和尾部构建四个目录。 对于头部分,它使用sys.prefix和sys.exec_prefix; 空头被跳过。 对于尾部,它使用空字符串,然后使用lib / site-packages(在Windows上)或lib / pythonX.Y / site-packages,然后使用lib / site-python(在Unix和Macintosh上)。 对于每个不同的头尾组合,它会查看它是否指向现有目录,如果是,则将其添加到sys.path中,并检查新添加的配置文件路径。

路径配置文件是名称形式为name.pth并存在于上述四个目录之一中的文件; 其内容是添加到sys.path的附加项目(每行一个)。 不存在的项目永远不会添加到sys.path中,也不会检查项目是指目录而不是文件。 没有项目多次添加到sys.path。 以#开头的空行和行将被跳过。 以导入开头的行(后跟空格或制表符)被执行。

在版本2.6中进行了更改:导入关键字后需要空格或制表符。

例如,假设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 configuration

foo
bar
bletch

bar.pth包含:

# bar package configuration

bar

然后,按以下sys.path顺序添加以下版本特定的目录:

/usr/local/lib/pythonX.Y/site-packages/bar
/usr/local/lib/pythonX.Y/site-packages/foo

请注意,bletch因为不存在而被省略; bar目录在foo目录之前,因为bar.pth在foo.pth之前按字母顺序排列; 并且垃圾邮件被省略,因为它在任何路径配置文件中都没有提及。

在这些路径操作之后,尝试导入名为sitecustomize的模块,该模块可以执行任意站点特定的自定义。 它通常由站点包目录中的系统管理员创建。 如果此导入失败并出现ImportError异常,则将其忽略。 如果启动Python时没有可用的输出流,就像在Windows上使用pythonw.exe(默认情况下用于启动IDLE)一样,将忽略sitecustomize的尝试输出。 除了ImportError之外的任何异常都会导致进程发生沉默,甚至可能是神秘的失败。

之后,如果ENABLE_USER_SITE为true,则会尝试导入名为usercustomize的模块,该模块可以执行任意用户特定的自定义。 这个文件打算在用户site-packages目录中创建(见下文),这是sys.path的一部分,除非被-s禁用。 ImportError将被默默忽略。

请注意,对于某些非Unix系统,sys.prefix和sys.exec_prefix为空,并且跳过路径操作; 但是仍然尝试导入sitecustomize和usercustomize。

site.PREFIXES

站点包目录的前缀列表。

2.6版本中的新功能。

site.ENABLE_USER_SITE

显示用户站点包目录状态的标志。 True意味着它被启用并被添加到sys.path中。 False表示它已被用户请求禁用(使用-s或PYTHONNOUSERSITE)。 没有意思是由于安全原因(用户或组ID与有效ID不匹配)或由管理员禁用了它。

2.6版本中的新功能。

site.USER_SITE

运行Python的用户站点包的路径。 如果getusersitepackages()尚未被调用,则可以为无。 默认值为〜/ .local / lib / pythonX.Y / site-packages,适用于UNIX和非框架Mac OS X构建,适用于Mac框架构建的〜/ Library / Python / XY / lib / python / site-packages和% Windows上的APPDATA%\ Python \ PythonXY \ site-packages。 这个目录是一个站点目录,这意味着它中的.pth文件将被处理。

2.6版本中的新功能。

site.USER_BASE

用户站点包的基本目录路径。 如果getuserbase()尚未被调用,则可以为无。 对于UNIX和Mac OS X非框架构建,默认值是〜/ .local,对于Mac框架构建,〜/ Library / Python / X.Y以及对于Windows的%APPDATA%\ Python。 Distutils使用此值计算用户安装方案的脚本,数据文件,Python模块等的安装目录。 另见PYTHONUSERBASE。

2.6版本中的新功能。

site.addsitedir(sitedir, known_paths=None)

将一个目录添加到sys.path并处理其.pth文件。 通常用于sitecustomize或usercustomize(见上文)。

site.getsitepackages()

返回一个包含所有全局站点包目录(也可能是站点python)的列表。

2.7版本的新功能。

site.getuserbase()

返回用户基目录的路径,USER_BASE。如果尚未初始化,该功能也会设置它,遵从PYTHONUSERBASE

2.7版本的新功能。

site.getusersitepackages()

返回用户特定的站点包目录USER_SITE的路径。 如果尚未初始化,则此函数也会设置它,并遵守PYTHONNOUSERSITE和USER_BASE。

2.7版本的新功能。

site模块还提供了一种从命令行获取用户目录的方法:

$ python -m site --user-site
/home/user/.local/lib/python2.7/site-packages

如果在不带参数的情况下调用它,它将在标准输出中打印sys.path的内容,接着是USER_BASE的值以及目录是否存在,然后USER_SITE和ENABLE_USER_SITE的值相同。

--user-base

打印用户基目录的路径。

--user-site

打印用户site-packages目录的路径。

如果给出了这两个选项,则会打印用户群和用户站点(始终按此顺序),并由os.pathsep分隔。

如果给出了任何选项,则脚本将以下列值之一退出:如果启用了用户site-packages目录,则为1;如果由用户禁用,则为2;如果由于安全原因而被禁用,或由管理员禁用,则为2; 如果出现错误,则该值大于2。

扩展内容

PEP 370 - 每个用户网站包目录

Python

Python 是一种面向对象的解释型计算机程序设计语言,由荷兰人 Guido van Rossum 于1989年发明,第一个公开发行版发行于1991年。 Python 是纯粹的自由软件, 源代码和解释器 CPython 遵循 GPL 协议。Python 语法简洁清晰,特色之一是强制用空白符( white space )作为语句缩进。

主页 https://www.python.org/
源码 https://github.com/python/cpython
版本 2.7
发布版本 2.7.13

Python目录

1.内置常量 | Built-in Constants
2.内置例外 | Built-in Exceptions
3.内置函数 | Built-in Functions
4.内置类型 | Built-in Types
5.编译器 | Compiler
6.加密 | Cryptography
7.数据压缩 | Data Compression
8.数据持久性 | Data Persistence
9.数据类型 | Data Types
10.调试和分析 | Debugging & Profiling
11.开发工具 | Development Tools
12.文件和目录访问 | File & Directory Access
13.文件格式 | File Formats
14.构架 | Frameworks
15.输入 | Importing
16.输入/输出 | Input/ouput
17.国际化 | Internationalization
18.网络 | Internet
19.网络数据 | Internet Data
20.翻译 | Interpreters
21.语言 | Language
22.记录 | Logging
23.Mac OS
24.MS Windows
25.多媒体 | Multimedia
26.联网 | Networking
27.数字与数学 | Numeric & Mathematical
28.操作系统 | Operating System
29.可选操作系统 | Optional Operating System
30.限制执行 | Restricted Execution
31.运行 | Runtime
32.SGI IRIX
33.软件包装与分销 | Software Packaging & Distribution
34.字符串 | String
35.结构化标记 | Structured Markup
36.Tk
37.Unix
38.Python 简介
39.Python pass 语句
40.Python 循环嵌套
41.Python 运算符
42.Python log10() 函数
43.Python log() 函数
44.Python floor() 函数
45.Python fabs() 函数
46.Python exp() 函数
47.Python cmp() 函数
48.Python ceil() 函数
49.Python abs() 函数
50.Python Number(数字)
51.Python pow() 函数
52.Python modf() 函数
53.Python min() 函数
54.Python max() 函数
55.Python asin() 函数
56.Python acos() 函数
57.Python uniform() 函数
58.Python shuffle() 函数
59.Python seed() 函数
60.Python random() 函数
61.Python randrange() 函数
62.Python choice() 函数
63.Python sqrt() 函数
64.Python round() 函数
65.Python radians() 函数
66.Python degrees() 函数
67.Python tan() 函数
68.Python sin() 函数
69.Python hypot() 函数
70.Python cos() 函数
71.Python atan2() 函数
72.Python atan() 函数
73.Python 元组
74.Python 列表(List)
75.Python 字符串
76.Python 字典(Dictionary)
77.Python 日期和时间
78.Python 函数
79.Python 模块
80.Python capitalize()方法
81.Python center()方法
82.Python count() 方法
83.Python expandtabs()方法
84.Python endswith()方法
85.Python encode()方法
86.Python decode()方法
87.Python find()方法
88.Python index()方法
89.Python 异常处理
90.Python isspace()方法
91.Python isnumeric()方法
92.Python islower()方法
93.Python isdigit()方法
94.Python isalpha()方法
95.Python isalnum()方法
96.Python isupper()方法
97.Python istitle()方法
98.Python min()方法
99.Python max()方法
100.Python maketrans()方法