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()¶
将 Python 版本作为字符串元组
(major, minor, patchlevel)
返回。请注意,与 Python
sys.version
不同,返回的值将始终包含补丁级别(默认为'0'
)。
- platform.release()¶
返回系统的版本,例如
'2.2.0'
或'NT'
。如果无法确定值,则返回空字符串。
- platform.system()¶
返回系统/操作系统名称,例如
'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()
提供的名称不同,在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'
,在多处理器计算机上,ptype 为'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()
返回,该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 版本中添加。