# 16.14. `platform` - 访问底层平台的识别数据

源代码： Lib/platform.py

注意

以字母顺序列出的特定平台，Linux包含在Unix部分。

## 16.14.1. Cross Platform

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

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

  返回一个元组`(bits, linkage)` ，包含关于可执行文件的位架构和链接格式的信息。这两个值都以字符串返回。

  无法确定的值按参数预设给定的返回。如果 bits 为`''`，则用 `sizeof(pointer)`（在 < 1.5.2 的 Python 版本上为`sizeof(long)`）表示支持的指针大小。

  该函数依赖于系统的`file`命令来进行实际工作。这在大多数（如果不是全部）Unix平台和一些非Unix平台上可用，然后只有当可执行文件指向Python解释器时才可用。当不满足上述需要时使用合理的默认值。

  注意

  在Mac OS X（以及可能其他平台）上，可执行文件可以是包含多个体系结构的通用文件。

  为了得到当前解释器的“64位”，查询`sys.maxsize`属性更可靠：

      is_64bits = sys.maxsize > 2**32

`platform.``machine`()

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

`platform.``node`()

  返回计算机的网络名称（可能不完全限定！）。如果无法确定该值，则返回空字符串。

`platform.``platform`(aliased=0, terse=0)

  返回一个标识基础平台的单个字符串，尽可能使用尽可能多的有用信息。

  输出旨在人类可读，而不是机器可分析。它可能在不同的平台看起来不同，这是打算。

  如果别名为真，则函数将为报告与其通用名称不同的系统名称的各种平台使用别名，例如SunOS将报告为Solaris。`system_alias()`函数用于实现此。

  将terse设置为true将使函数仅返回识别平台所需的绝对最小信息。

`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`不同，返回的值总是包含patchlevel（默认为0）。

`platform.``python_version_tuple`()

  返回字符串的tuple `（major， minor， patchlevel）`的Python版本。

  请注意，与Python `sys.version`不同，返回值将始终包含patchlevel（默认为`'0'`）。

`platform.``release`()

  返回系统的版本，例如`'2.2.0'`或`'NT'`如果无法确定值，则返回空字符串。

`platform.``system`()

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

`platform.``system_alias`(system, release, version)

  Returns `(system, release, version)` aliased to common marketing names used for some systems. 它在某些情况下也会对信息进行重新排序，否则会造成混乱。

`platform.``version`()

  返回系统的发布版本，例如`'＃3 on degas'`。如果无法确定该值，则返回空字符串。

`platform.``uname`()

  相当便携的uname接口。Returns a `namedtuple()` containing six attributes: `system`, `node`, `release`, `version`, `machine`, and `processor`.

  请注意，这会增加`os.uname()`结果中不存在的第六个属性（`processor`）。此外，属性名称对于前两个属性是不同的； `os.uname()`将它们命名为`sysname`和`nodename`。

  无法确定的条目设置为`''`。

  在版本3.3中更改：结果从元组更改为namedtuple。

## 16.14.2. Java Platform

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

  Jython的版本接口。

  Returns a tuple `(release, vendor, vminfo, osinfo)` with vminfo being a tuple `(vm_name, vm_release, vm_vendor)` and osinfo being a tuple `(os_name, os_version, os_arch)`. 无法确定的值设置为以参数形式给出的默认值（所有默认值均为`''`）。

## 16.14.3. Windows Platform

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

  从Windows注册表获取其他版本信息，并返回元组`（发布， 版本， csd， ptype） t4>`指OS版本，版本号，CSD级别（服务封装）和OS类型（多/单处理器）。

  As a hint: ptype is `'Uniprocessor Free'` on single processor NT machines and `'Multiprocessor Free'` on multi processor machines. 'Free'是指没有调试代码的操作系统版本。它也可以表示'Checked'，这意味着操作系统版本使用调试代码，即检查参数，范围等的代码。

  注意

  这个函数最适合安装Mark Hammond的`win32all`软件包，但也适用于Python 2.3及更高版本（支持在Python 2.6中添加）。它显然只能在Win32兼容平台上运行。

### 16.14.3.1. Win95/98 specific

`platform.``popen`(cmd, mode='r', bufsize=-1)

  便携式`popen()`接口。找到一个工作popen实现喜欢`win32pipe.popen()`。在Windows NT上，`win32pipe.popen()`应该工作；在Windows 9x它挂起由于MS C库中的错误。

  自版本3.3后已弃用：此函数已过时。使用`subprocess`模块。特别检查Replacing Older Functions with the subprocess Module部分。

## 16.14.4. Mac OS Platform

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

  Get Mac OS version information and return it as tuple `(release, versioninfo, machine)` with versioninfo being a tuple `(version, dev_stage, non_release_version)`.

  无法确定的条目设置为`''`。所有元组条目都是字符串。

## 16.14.5. Unix Platforms

`platform.``dist`(distname='', version='', id='', supported_dists=('SuSE', 'debian', 'redhat', 'mandrake', ...))

  这是`linux_distribution()`的另一个名称。

  自版本3.5起已弃用，将在版本3.7中移除。

`platform.``linux_distribution`(distname='', version='', id='', supported_dists=('SuSE', 'debian', 'redhat', 'mandrake', ...), full_distribution_name=1)

  尝试确定Linux操作系统分发名称的名称。

  可以给出`supported_dists`以定义要查找的Linux发行版集合。它默认为由其发行文件名标识的当前支持的Linux发行版的列表。

  如果`full_distribution_name`为true（默认值），则返回从操作系统读取的完整分布。否则使用取自`supported_dists`的短名称。

  返回元组`(distname,version,id)`，默认为作为参数给出的args。`id`是版本号后面的括号中的项目。它通常是版本代号。

  自版本3.5起已弃用，将在版本3.7中移除。

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

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

  请注意，虽然此函数非常了解不同的libc版本如何向可执行文件添加符号，但可能只适用于使用gcc编译的可执行文件。

  文件将以chunksize字节的块读取和扫描。