11

我正在阅读的书sys.platform在 python3 中向我展示,在 Windows 上运行良好,但在 Linux 中,即使我的内核是 Linux3,我也会不断返回“Linux2”。

在 StackOverflow 上进行搜索,我看到人们提到platform.systemos.name. 其中第一个将告诉您 Linux/Windows,但不告诉您是什么版本,后者为您提供 NT/Posix 中的技术名称。

对于经验丰富的 python 编码人员使用的最准确和首选的方法,我有点困惑。是否可以获得“windows7”或Linux3?

非常感谢。附言。stackoverflow 还是新手,希望能正确格式化我的问题。

4

2 回答 2

17

你不应该依赖这个数字,因为正如你所指出的,它是不一致的。它实际上显示了编译 Python 的系统上内核的主要版本。

此外,它已在 Python 3.3 中删除:

问题12326:在 Linux 上,sys.platform 不再包含主要版本。它现在总是“linux”,而不是“linux2”或“linux3”,具体取决于用于构建 Python 的 Linux 版本。如果您不需要支持较旧的 Python 版本,请替换sys.platform == 'linux2'sys.platform.startswith('linux'), 或直接替换。Python 3.3 的新特性»移植 Python 代码sys.platform == 'linux'

也可以看看:sys.platform

因此,确定系统是否为 Linux 的首选方法是sys.platform.startswith('linux'). 它适用于所有版本的 Python 和 Linux。

似乎没有办法在标准库中更准确地找出操作系统名称。

于 2012-05-03T10:42:25.250 回答
0

检查文档here,它都解释了为什么'linux2'以及如何以向后兼容的方式对待它:

https://docs.python.org/2/library/sys.html

在 2.7.3 版更改:由于大量代码检查 sys.platform == 'linux2',并且 Linux 2.x 和 3.x 之间没有本质的变化,sys.platform 始终设置为 'linux2',即使在 Linux 3.x 上。在 Python 3.3 及更高版本中,该值将始终设置为 'linux',因此建议始终使用startswith ...

于 2014-12-02T10:38:22.123 回答