platform — 访问底层平台的身份识别数据

源代码: Lib/platform.py


注意

特定平台按字母顺序排列,Linux 包含在 Unix 部分中。

跨平台

platform.architecture(executable=sys.executable, bits='', linkage='')

查询给定的可执行文件(默认为 Python 解释器二进制文件)以获取各种体系结构信息。

返回一个元组 (bits, linkage),其中包含有关可执行文件使用的位体系结构和链接格式的信息。这两个值都以字符串形式返回。

无法确定的值将按参数预设值返回。如果 bits 被赋予 '',则使用 sizeof(pointer)(或 Python 版本 < 1.5.2 上的 sizeof(long))作为支持的指针大小的指示符。

该函数依赖于系统的 file 命令来完成实际工作。这在大多数(如果不是全部)Unix 平台和一些非 Unix 平台上都可用,并且只有在可执行文件指向 Python 解释器时才可用。如果不能满足上述需求,则使用合理的默认值。

注意

在 macOS(以及其他平台)上,可执行文件可能是包含多种体系结构的通用文件。

要获取当前解释器的“64 位”,查询 sys.maxsize 属性更为可靠

is_64bits = sys.maxsize > 2**32
platform.machine()

返回机器类型,例如 'AMD64'。如果无法确定该值,则返回空字符串。

platform.node()

返回计算机的网络名称(可能不是完全限定的!)。如果无法确定该值,则返回空字符串。

platform.platform(aliased=False, terse=False)

返回一个字符串,该字符串标识底层平台,并包含尽可能多的有用信息。

输出旨在人类可读,而不是机器可解析。它在不同的平台上可能看起来不同,这是有意为之的。

如果 aliased 为 true,则该函数将对报告的系统名称与其通用名称不同的各种平台使用别名,例如,SunOS 将报告为 Solaris。使用 system_alias() 函数来实现这一点。

terse 设置为 true 会导致函数仅返回标识平台所需的绝对最小信息。

在 3.8 版更改: 在 macOS 上,该函数现在使用 mac_ver()(如果它返回非空发布字符串)来获取 macOS 版本,而不是 darwin 版本。

platform.processor()

返回(真实的)处理器名称,例如 'amdk6'

如果无法确定该值,则返回空字符串。请注意,许多平台不提供此信息,或者仅返回与 machine() 相同的值。NetBSD 就是这样做的。

platform.python_build()

返回一个元组 (buildno, builddate),以字符串形式说明 Python 构建号和日期。

platform.python_compiler()

返回一个字符串,该字符串标识用于编译 Python 的编译器。

platform.python_branch()

返回一个字符串,该字符串标识 Python 实现 SCM 分支。

platform.python_implementation()

返回一个字符串,该字符串标识 Python 实现。可能的返回值为:'CPython'、'IronPython'、'Jython'、'PyPy'。

platform.python_revision()

返回一个字符串,该字符串标识 Python 实现 SCM 修订版。

platform.python_version()

以字符串形式返回 Python 版本 'major.minor.patchlevel'

请注意,与 Python sys.version 不同,返回值将始终包含补丁级别(默认为 0)。

platform.python_version_tuple()

以字符串元组 (major, minor, patchlevel) 的形式返回 Python 版本。

请注意,与 Python 的 sys.version 不同,返回值将始终包含修订版本号(默认为 '0')。

platform.release()

返回系统的发行版本,例如 '2.2.0''NT'。如果无法确定该值,则返回空字符串。

platform.system()

返回系统/操作系统名称,例如 'Linux''Darwin''Java''Windows'。如果无法确定该值,则返回空字符串。

platform.system_alias(system, release, version)

返回 (system, release, version),并将其别名为某些系统使用的常见市场名称。在某些情况下,它还会对信息进行一些重新排序,以避免造成混淆。

platform.version()

返回系统的发行版本,例如 '#3 on degas'。如果无法确定该值,则返回空字符串。

platform.uname()

相当便携的 uname 接口。返回一个包含六个属性的 namedtuple()systemnodereleaseversionmachineprocessor

processor 会在需要时延迟解析。

注意:前两个属性名称与 os.uname() 提供的名称不同,后者分别命名为 sysnamenodename

无法确定的条目将设置为 ''

在 3.3 版更改: 结果从元组更改为 namedtuple()

在 3.9 版更改: processor 会在需要时延迟解析,而不是立即解析。

Java 平台

platform.java_ver(release='', vendor='', vminfo=('', '', ''), osinfo=('', '', ''))

Jython 的版本接口。

返回一个元组 (release, vendor, vminfo, osinfo),其中 vminfo 是一个元组 (vm_name, vm_release, vm_vendor)osinfo 是一个元组 (os_name, os_version, os_arch)。无法确定的值将设置为作为参数给出的默认值(所有默认值均为 '')。

Windows 平台

platform.win32_ver(release='', version='', csd='', ptype='')

从 Windows 注册表中获取其他版本信息,并返回一个元组 (release, version, csd, ptype),分别表示操作系统发行版本、版本号、CSD 级别(Service Pack)和操作系统类型(多处理器/单处理器)。无法确定的值将设置为作为参数给出的默认值(所有默认值均为空字符串)。

提示:在单处理器 NT 机器上,ptype'Uniprocessor Free',在多处理器机器上为 'Multiprocessor Free''Free' 表示操作系统版本不包含调试代码。它也可能显示为 'Checked',这意味着操作系统版本使用调试代码,即检查参数、范围等的代码。

platform.win32_edition()

返回表示当前 Windows 版本的字符串,如果无法确定该值,则返回 None。可能的值包括但不限于 'Enterprise''IoTUAP''ServerStandard''nanoserver'

3.8 版的新功能。

platform.win32_is_iot()

如果 win32_edition() 返回的 Windows 版本被识别为 IoT 版本,则返回 True

3.8 版的新功能。

macOS 平台

platform.mac_ver(release='', versioninfo=('', '', ''), machine='')

获取 macOS 版本信息,并将其作为元组 (release, versioninfo, machine) 返回,其中 *versioninfo* 是一个元组 (version, dev_stage, non_release_version)

无法确定的条目将设置为 ''。所有元组条目均为字符串。

Unix 平台

platform.libc_ver(executable=sys.executable, lib='', version='', chunksize=16384)

尝试确定文件可执行文件(默认为 Python 解释器)所链接到的 libc 版本。返回一个字符串元组 (lib, version),如果查找失败,则默认为给定的参数。

请注意,此函数非常了解不同 libc 版本如何将符号添加到可执行文件中,因此可能仅适用于使用 gcc 编译的可执行文件。

该文件以 *chunksize* 字节为单位读取和扫描。

Linux 平台

platform.freedesktop_os_release()

os-release 文件获取操作系统标识,并将其作为字典返回。os-release 文件是 freedesktop.org 标准,并且在大多数 Linux 发行版中都可用。一个明显的例外是 Android 和基于 Android 的发行版。

/etc/os-release/usr/lib/os-release 都无法读取时,引发 OSError 或子类。

成功时,该函数返回一个字典,其中键和值都是字符串。值具有未加引号的特殊字符,例如 "$。根据标准,始终定义字段 NAMEIDPRETTY_NAME。所有其他字段都是可选的。供应商可以包含其他字段。

请注意,像 NAMEVERSIONVARIANT 这样的字段是适合呈现给用户的字符串。程序应使用 IDID_LIKEVERSION_IDVARIANT_ID 等字段来标识 Linux 发行版。

示例

def get_like_distro():
    info = platform.freedesktop_os_release()
    ids = [info["ID"]]
    if "ID_LIKE" in info:
        # ids are space separated and ordered by precedence
        ids.extend(info["ID_LIKE"].split())
    return ids

3.10 版新增。