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* 为真,函数将为报告的系统名称与其通用名称不同的各种平台使用别名,例如 SunOS 将报告为 Solaris。
system_alias()函数用于实现此功能。将 *terse* 设置为真会使函数只返回识别平台所需的绝对最少信息。
在 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()¶
以字符串
'major.minor.patchlevel'的形式返回 Python 版本。请注意,与 Python 的
sys.version不同,返回的值将始终包含修订级别(默认为0)。
- platform.python_version_tuple()¶
将 Python 版本以字符串元组
(major, minor, patchlevel)的形式返回。请注意,与 Python 的
sys.version不同,返回的值将始终包含修订级别(默认为'0')。
- platform.release()¶
返回系统的发布版本,例如
'2.2.0'或'NT'。如果无法确定该值,则返回空字符串。
- platform.system()¶
返回系统/OS 名称,例如
'Linux','Darwin','Java','Windows'。如果无法确定该值,则返回空字符串。在 iOS 和 Android 上,该函数返回面向用户的操作系统名称(即
'iOS','iPadOS'或'Android')。要获取内核名称('Darwin'或'Linux'),请使用os.uname()。
- platform.system_alias(system, release, version)¶
返回
(system, release, version),并为某些系统使用常见的市场名称作为别名。在某些情况下,它还会对信息进行重新排序,以避免混淆。
- platform.version()¶
返回系统的发布版本,例如
'#3 on degas'。如果无法确定该值,则返回空字符串。在 iOS 和 Android 上,这是面向用户的操作系统版本。要获取 Darwin 或 Linux 内核版本,请使用
os.uname()。
- platform.uname()¶
相当可移植的 uname 接口。返回一个
namedtuple(),包含六个属性:system,node,release,version,machine和processor。processor是在需要时才延迟解析的。注意:前两个属性名称与
os.uname()提供的名称不同,后者将它们命名为sysname和nodename。无法确定的条目被设置为
''。在 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)。无法确定的值被设置为作为参数给出的默认值(所有默认值均为'')。自 3.13 版本起废弃,将在 3.15 版本中移除: 它基本上未经测试,API 令人困惑,并且只对 Jython 支持有用。
Windows 平台¶
- platform.win32_ver(release='', version='', csd='', ptype='')¶
从 Windows 注册表获取附加版本信息,并返回一个元组
(release, version, csd, ptype),分别表示操作系统发布版本、版本号、CSD 级别(服务包)和操作系统类型(多/单处理器)。无法确定的值将设置为作为参数给出的默认值(所有默认值都为空字符串)。提示:在单处理器 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)。无法确定的条目被设置为
''。所有元组条目都是字符串。
iOS 平台¶
- platform.ios_ver(system='', release='', model='', is_simulator=False)¶
获取 iOS 版本信息并将其作为具有以下属性的
namedtuple()返回。system是操作系统名称;可以是'iOS'或'iPadOS'。release是 iOS 版本号,为字符串(例如'17.2')。model是设备型号标识符;对于物理设备,这将是一个类似'iPhone13,2'的字符串,或在模拟器上为'iPhone'。is_simulator是一个布尔值,描述应用程序是在模拟器上运行还是在物理设备上运行。
无法确定的条目将设置为作为参数给出的默认值。
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或其子类。成功时,函数返回一个字典,其中键和值都是字符串。值的特殊字符如
"和$会被去除引号。根据标准,字段NAME,ID和PRETTY_NAME总是被定义的。所有其他字段都是可选的。供应商可能会包含额外的字段。请注意,像
NAME,VERSION和VARIANT这样的字段是适合呈现给用户的字符串。程序应使用像ID,ID_LIKE,VERSION_ID或VARIANT_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 版本加入。
Android 平台¶
- platform.android_ver(release='', api_level=0, manufacturer='', model='', device='', is_emulator=False)¶
获取 Android 设备信息。返回一个包含以下属性的
namedtuple()。无法确定的值将设置为作为参数给出的默认值。release- Android 版本,字符串形式 (例如"14")。api_level- 运行设备的 API 级别,整数形式(例如 Android 14 为34)。要获取 Python 构建时所依据的 API 级别,请参阅sys.getandroidapilevel()。manufacturer- 制造商名称。model- 型号名称——通常是市场营销名称或型号。device- 设备名称——通常是型号或代号。is_emulator- 如果设备是模拟器则为True;如果是物理设备则为False。
Google 维护着一个 已知型号和设备名称列表。
在 3.13 版本加入。
命令行用法¶
python -m platform [--terse] [--nonaliased] [{nonaliased,terse} ...]
接受以下选项
- --terse¶
打印关于平台的简要信息。这相当于调用
platform.platform()并将 *terse* 参数设置为True。
- --nonaliased¶
打印不带系统/OS 名称别名的平台信息。这相当于调用
platform.platform()并将 *aliased* 参数设置为True。
你也可以传递一个或多个位置参数(terse, nonaliased)来明确控制输出格式。它们的行为与其对应的选项相似。