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
)来明确控制输出格式。它们的行为与其对应的选项相似。