Python sys.platform = Linux2但不是Linux3?

时间:2012-05-02 14:35:54

标签: python-3.x

我正在阅读的书在python3中显示sys.platform,在Windows上运行正常,但在Linux中,即使我的内核是Linux3,我仍然会回到“Linux2”。

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

我有点困惑,这是经验python编码器使用的最准确和首选的方法。是否有可能获得“windows7”或Linux3?

非常感谢。 PS。仍然是stackoverflow的新手,希望能正确地格式化我的问题。

2 个答案:

答案 0 :(得分:14)

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

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

  

issue 12326:在Linux上,sys.platform不再包含主要版本。它现在总是'linux',而不是'linux2'或'linux3',具体取决于用于构建Python的Linux版本。如果您不需要支持较旧的Python版本,请将sys.platform == 'linux2'替换为sys.platform.startswith('linux'),或直接sys.platform == 'linux'
   - What's New In Python 3.3»Porting Python code

另请参阅:sys.platform

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

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

答案 1 :(得分:0)

查看这里的文档,它既解释了为什么'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 ...