29.2. sysconfig
- 提供对Python配置信息¶的访问
版本3.2中的新功能。
源代码: Lib / sysconfig.py
sysconfig
模块提供对Python配置信息的访问,如安装路径列表和与当前平台相关的配置变量。
29.2.1. Configuration variables¶
A Python distribution contains a Makefile
and a pyconfig.h
header file that are necessary to build both the Python binary itself and third-party C extensions compiled using distutils
.
sysconfig
将这些文件中找到的所有变量放在可以使用get_config_vars()
或get_config_var()
访问的字典中。
注意在Windows上,它是一个小得多的集合。
-
sysconfig.
get_config_vars
(*args)¶ 没有参数,返回与当前平台相关的所有配置变量的字典。
使用参数,返回从查找配置变量字典中的每个参数产生的值的列表。
对于每个参数,如果未找到该值,则返回
None
。
-
sysconfig.
get_config_var
(name)¶ 返回单个变量名称的值。等同于
get_config_vars().get(name)
。如果未找到名称,请返回
None
。
使用示例:
>>> import sysconfig
>>> sysconfig.get_config_var('Py_ENABLE_SHARED')
0
>>> sysconfig.get_config_var('LIBDIR')
'/usr/local/lib'
>>> sysconfig.get_config_vars('AR', 'CXX')
['ar', 'g++']
29.2.2. Installation paths¶
Python使用的安装方案因平台和安装选项而异。这些方案存储在基于os.name
返回值的唯一标识符下的sysconfig
中。
使用distutils
或基于Distutils的系统安装的每个新组件都将遵循相同的方案,在正确的位置复制其文件。
Python目前支持七种方案:
- posix_prefix:用于Posix平台(如Linux或Mac OS X)的方案。这是在安装Python或组件时使用的默认方案。
- posix_home:在安装时使用home选项时使用的Posix平台方案。当通过具有特定归属前缀的Distutils安装组件时,使用此方案。
- posix_user:当通过Distutils安装组件并使用用户选项时使用的Posix平台方案。此方案定义位于用户主目录下的路径。
- nt:用于NT平台(如Windows)的方案。
- nt_user:当使用用户选项时,NT平台的方案。
每个方案本身由一系列路径组成,并且每个路径具有唯一的标识符。Python目前使用八个路径:
- stdlib:包含不是平台特定的标准Python库文件的目录。
- platstdlib:包含平台特定的标准Python库文件的目录。
- platlib:特定于站点的平台特定文件的目录。
- purelib:特定于站点的非平台特定文件的目录。
- include:非平台特定头文件的目录。
- platinclude:特定于平台的头文件的目录。
- scripts:脚本文件的目录。
- data:数据文件的目录。
sysconfig
提供了一些函数来确定这些路径。
-
sysconfig.
get_path
(name[, scheme[, vars[, expand]]])¶ 从名为方案的安装方案中返回与路径名称对应的安装路径。
名称必须是由
get_path_names()
返回的列表中的值。sysconfig
存储每个平台的每个路径名对应的安装路径,其中包含要展开的变量。对于实例,nt方案的stdlib路径是:{base}/Lib
。get_path()
将使用get_config_vars()
返回的变量来展开路径。所有变量具有每个平台的默认值,因此可以调用此函数并获取默认值。如果提供scheme,它必须是
get_scheme_names()
返回的列表中的值。否则,将使用当前平台的默认方案。如果提供了vars,它必须是一个变量字典,它将更新由
get_config_vars()
返回的字典。如果expand设置为
False
,则不会使用变量扩展路径。如果未找到名称,请返回
None
。
-
sysconfig.
get_paths
([scheme[, vars[, expand]]])¶ 返回包含与安装方案对应的所有安装路径的字典。有关详细信息,请参阅
get_path()
。如果未提供scheme,则将使用当前平台的默认方案。
如果提供了vars,它必须是将更新用于展开路径的字典的变量字典。
如果expand设置为False,则不会展开路径。
如果方案不是现有方案,
get_paths()
将引用KeyError
。
29.2.3. Other functions¶
-
sysconfig.
get_python_version
()¶ 将
MAJOR.MINOR
Python版本号作为字符串返回。类似于sys.version[:3]
。
-
sysconfig.
get_platform
()¶ 返回一个标识当前平台的字符串。
这主要用于区分特定于平台的构建目录和特定于平台的构建分布。通常包括操作系统名称和版本以及体系结构(由
os.uname()
提供),尽管包括的确切信息取决于操作系统;例如对于IRIX架构并不是特别重要(IRIX只能在SGI硬件上运行),但对于Linux,内核版本并不是特别重要。返回值的示例:
- linux-i586
- linux-alpha(?)
- solaris-2.6-sun4u
- irix-5.3
- irix64-6.2
Windows将返回以下值之一:
- win-amd64(64位Windows on AMD64(aka x86_64,Intel64,EM64T等)
- win-ia64(64位Windows on Itanium)
- win32(所有其他 - 特别是,sys.platform被返回)
Mac OS X可以返回:
- macosx-10.6-ppc
- macosx-10.4-ppc64
- macosx-10.3-i386
- macosx-10.4-脂肪
对于其他非POSIX平台,目前只返回
sys.platform
。
-
sysconfig.
is_python_build
()¶ 如果当前Python安装是从源代码构建的,则返回
True
。
-
sysconfig.
parse_config_h
(fp[, vars])¶ 解析
config.h
样式文件。fp是指向
config.h
类似文件的类文件对象。返回包含名称/值对的字典。如果传递一个可选的字典作为第二个参数,它将被使用,而不是一个新的字典,并用文件中读取的值更新。
-
sysconfig.
get_config_h_filename
()¶ 返回
pyconfig.h
的路径。
-
sysconfig.
get_makefile_filename
()¶ 返回
Makefile
的路径。
29.2.4. Using sysconfig
as a script¶
您可以使用sysconfig
作为Python的-m选项的脚本:
$ python -m sysconfig
Platform: "macosx-10.4-i386"
Python version: "3.2"
Current installation scheme: "posix_prefix"
Paths:
data = "/usr/local"
include = "/Users/tarek/Dev/svn.python.org/py3k/Include"
platinclude = "."
platlib = "/usr/local/lib/python3.2/site-packages"
platstdlib = "/usr/local/lib/python3.2"
purelib = "/usr/local/lib/python3.2/site-packages"
scripts = "/usr/local/bin"
stdlib = "/usr/local/lib/python3.2"
Variables:
AC_APPLE_UNIVERSAL_BUILD = "0"
AIX_GENUINE_CPLUSPLUS = "0"
AR = "ar"
ARFLAGS = "rc"
ASDLGEN = "./Parser/asdl_c.py"
...
此调用将在标准输出中打印由get_platform()
,get_python_version()
,get_path()
和get_config_vars()
。