sysconfig ---提供对python配置信息的访问

3.2 新版功能.

源代码: Lib/sysconfig.py


这个 sysconfig 模块提供对python配置信息的访问,如安装路径列表和与当前平台相关的配置变量。

配置变量

python发行版包含 Makefile 和A pyconfig.h 构建python二进制文件本身和使用编译的第三方C扩展所必需的头文件 distutils .

sysconfig 将在这些文件中找到的所有变量放入可以使用 get_config_vars()get_config_var() .

注意,在Windows上,它的设置要小得多。

sysconfig.get_config_vars(*args)

如果没有参数,则返回与当前平台相关的所有配置变量的字典。

使用参数,返回在配置变量字典中查找每个参数所产生的值列表。

对于每个参数,如果找不到该值,则返回 None .

sysconfig.get_config_var(name)

返回单个变量的值 name . 相当于 get_config_vars().get(name) .

如果 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++']

安装路径

python使用的安装方案因平台和安装选项而异。这些方案存储在 sysconfig 基于返回值的唯一标识符下 os.name .

安装的每个新组件都使用 distutils 或者,基于distutils的系统将遵循相同的方案,将其文件复制到正确的位置。

python目前支持七种方案:

  • posix_prefix :用于Linux或Mac OS X等POSIX平台的方案。这是安装Python或组件时使用的默认方案。

  • posix_home :当 home 安装时使用选项。当通过带有特定主前缀的distuils安装组件时,使用此方案。

  • posix_user :通过Distutils和 user 使用选项。此方案定义位于用户主目录下的路径。

  • nt :Windows等NT平台方案。

  • nt_user :NT平台方案,当 user 使用选项。

每个方案本身由一系列路径组成,每个路径都有一个唯一的标识符。python当前使用八条路径:

  • 标准库 :包含非平台特定的标准python库文件的目录。

  • 普拉斯德利布 :包含特定于平台的标准python库文件的目录。

  • 柏拉图 :特定于站点、特定于平台的文件的目录。

  • 耻骨 :站点特定的、非平台特定的文件的目录。

  • 包括 :非平台特定头文件的目录。

  • 铂片 :平台特定头文件的目录。

  • 脚本 :脚本文件的目录。

  • data :数据文件的目录。

sysconfig 提供一些函数来确定这些路径。

sysconfig.get_scheme_names()

返回包含中当前支持的所有方案的元组 sysconfig .

sysconfig.get_path_names()

返回包含中当前支持的所有路径名的元组 sysconfig .

sysconfig.get_path(name[, scheme[, vars[, expand]]])

返回与该路径对应的安装路径 name ,来自名为的安装方案 方案 .

name 必须是由返回的列表中的值 get_path_names() .

sysconfig 为每个平台存储与每个路径名对应的安装路径,并扩展变量。例如 标准库 路径 nt 方案是: {{base}}/Lib .

get_path() 将使用返回的变量 get_config_vars() 展开路径。所有变量都有每个平台的默认值,因此可以调用此函数并获取默认值。

如果 方案 提供,它必须是由返回的列表中的值 get_scheme_names() . 否则,将使用当前平台的默认方案。

如果 vars 如果提供,则必须是变量字典,它将更新字典返回 get_config_vars() .

如果 扩大 设置为 False ,不会使用变量扩展路径。

如果 name 找不到,返回 None .

sysconfig.get_paths([scheme[, vars[, expand]]])

返回包含与安装方案对应的所有安装路径的字典。见 get_path() 更多信息。

如果 方案 未提供,将使用当前平台的默认方案。

如果 vars 如果提供,则必须是变量字典,它将更新用于扩展路径的字典。

如果 扩大 如果设置为false,则不会展开路径。

如果 方案 不是现有方案, get_paths() 将提高 KeyError .

其他功能

sysconfig.get_python_version()

返回 MAJOR.MINOR 字符串形式的python版本号。类似 '%d.%d' % sys.version_info[:2] .

sysconfig.get_platform()

返回标识当前平台的字符串。

这主要用于区分特定于平台的构建目录和特定于平台的构建分发。通常包括操作系统名称、版本和体系结构(如“os.uname()”所提供),尽管所包含的确切信息取决于操作系统;例如,在Linux上,内核版本并不特别重要。

返回值示例:

  • LIUX-I5866

  • Linux Alpha(?)

  • Solaris-2.6-SUN4U

Windows将返回以下内容之一:

  • win-amd64(amd64、aka x86_64、intel64和em64t上的64位Windows)

  • Win32(返回所有其他系统,特别是sys.platform)

Mac OS X可以返回:

  • MaCOSX-10-6PPC

  • MacOSX-10.4-PPC64型

  • Macosx-10.3-i386型

  • MaCOSX-104-FAT

对于其他非POSIX平台,当前只返回 sys.platform .

sysconfig.is_python_build()

返回 True 如果正在运行的python解释器是从源代码构建的,并且是从其构建位置运行的,而不是从诸如运行 make install 或者通过二进制安装程序安装。

sysconfig.parse_config_h(fp[, vars])

解析一 config.h 样式文件。

fp 是指向 config.h 类文件。

返回包含名称/值对的字典。如果将可选字典作为第二个参数传入,则使用它而不是新字典,并使用文件中读取的值进行更新。

sysconfig.get_config_h_filename()

返回的路径 pyconfig.h .

sysconfig.get_makefile_filename()

返回的路径 Makefile .

使用 sysconfig 作为剧本

你可以使用 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"
        ...

此调用将在标准输出中打印 get_platform()get_python_version()get_path()get_config_vars() .