【问题标题】:What does platform.system and platform.linux_distribution exactly output?platform.system 和 platform.linux_distribution 究竟输出了什么?
【发布时间】:2013-11-22 13:12:19
【问题描述】:

我正在尝试创建一个 python 脚本来在 linux 机器上自动安装和配置某些程序。

我的想法是使用平台和多处理库来询问系统信息(platform.system,platform.linux_distribution,multiprocessing.cpu_count等),然后安装软件并根据软件配置创建一个文本文件我从这些电话中得到什么。

我在确定操作系统和发行版时遇到问题:我需要知道脚本在哪个 linux 发行版中运行,以便启动适当的命令,而我要查找的信息不在 python 文档中。

根据该文档(http://docs.python.org/2/library/platform.html), 平台系统

返回系统/操作系统名称,例如“Linux”、“Windows”或“Java”。如果无法确定值,则返回空字符串。

和platform.linux_distribution

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

(...)

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

但不够具体,也没有提到任何特殊情况。

我已经在我的机器上尝试过这些变量(platform.system 返回 'Linux' 和 platform.linux_distribution 'debian'),但我无法在其他系统上尝试它(而且我认为创建它是不可行的每个 linux 发行版的虚拟机,并在每个发行版中尝试)

我需要确切知道 distname 字符串 platform.linux_distribution 在不同的 Linux 发行版中输出什么,以便我可以在我的脚本中使用这些值。

我还需要确认 platform.system 在每个 linux 发行版中是否返回相同的内容。有没有例外?

【问题讨论】:

标签: python linux


【解决方案1】:

首先,consulting the codeplatform.system 覆盖os.uname。后面的 *nix 是 uname 命令调用。 wiki 中提供了一些可能的值。

其次,linux_distributionroughly speaking,执行head /etc/file,其中file 是第一个以releaseversion 结尾的文件。也就是说,对于 debian/ubuntu,例如,head /etc/debian_version。它拆分然后生成的行并在找到元组时返回。

我有权访问的基于 Linux 的平台的 linux_distribution 输出示例:

$ python -c 'import platform; print platform.linux_distribution()'
('debian', 'squeeze/sid', '')
('debian', 'wheezy/sid', '')
('SUSE Linux Enterprise Server ', '11', 'x86_64')
('Red Hat Enterprise Linux Server', '5.9', 'Tikanga')
('Red Hat Enterprise Linux Server', '6.4', 'Santiago')

我想你可以在这里找到模式。我个人不会依赖linux_distribution,有一些已知问题,例如升级后/etc/debian_version 的内容可能会被破坏。

【讨论】:

  • 谢谢,这有点清楚了。对于我正在尝试做的事情,是否有任何合理的替代 linux_distribution 的方法?我在 python 方面没有太多经验(这是我用它做的第一件事),我不知道我能用它走多远。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-07-23
  • 2012-07-23
  • 2016-09-10
  • 2023-03-15
  • 2012-10-17
  • 2021-06-04
  • 1970-01-01
相关资源
最近更新 更多