Python 3.x Python sys.platform=Linux2而不是Linux3?

Python 3.x Python sys.platform=Linux2而不是Linux3?,python-3.x,Python 3.x,我正在读的这本书向我展示了python3中的sys.platform,在windows上运行得很好,但是在Linux中,尽管我的内核是Linux3,我还是不断地返回“Linux2” 在StackOverflow上搜索时,我看到人们提到了platform.system和os.name。其中第一个将告诉您Linux/Windows,但不会告诉您是什么版本,而后面一个将告诉您NT/Posix中的技术名称 对于有经验的python程序员所使用的最准确和首选的方法,我有点困惑。是否可以获得“windows

我正在读的这本书向我展示了python3中的sys.platform,在windows上运行得很好,但是在Linux中,尽管我的内核是Linux3,我还是不断地返回“Linux2”

在StackOverflow上搜索时,我看到人们提到了
platform.system
os.name
。其中第一个将告诉您Linux/Windows,但不会告诉您是什么版本,而后面一个将告诉您NT/Posix中的技术名称

对于有经验的python程序员所使用的最准确和首选的方法,我有点困惑。是否可以获得“windows7”或Linux3

非常感谢。
另外,对于stackoverflow还是新手,希望我的问题格式正确。

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

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

:在Linux上,sys.platform不再包含主版本。它现在总是“linux”,而不是“linux2”或“linux3”,这取决于用于构建Python的linux版本。将
sys.platform==“linux2”
替换为
sys.platform.startswith('linux')
,或者直接替换
sys.platform==“linux”
,如果您不需要支持较旧的Python版本。
–»

另见:

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


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

查看此处的文档,它既解释了为什么使用“linux2”,也解释了如何以向后兼容的方式处理它:

在版本2.7.3中更改:因为对sys.platform进行了大量代码检查== “linux2”,Linux 2.x和3.x之间没有本质的变化, sys.platform始终设置为“linux2”,即使在Linux 3.x上也是如此。在Python 3.3中 稍后,该值将始终设置为“linux”,因此建议使用
要始终使用startswith…

刚刚遇到python bug报告,其中指出python3.3通过使
sys.platform
现在只报告“Linux”,而不是“Linux2”或“Linux3”等来解决此问题。我仍然有兴趣知道有经验的程序员更喜欢使用什么。只是出于好奇,你使用的是什么发行版,你有Linux 3内核?我应该猜到了。Arch始终是我们其他人早期发现问题的发行版:-)@HankGay:最新版本将有Linux 3。事实上,这并不是一个重大的变化,莱纳斯只是决定是时候换一个新号码了。内核的主要版本号是不相关的,从一开始就不应该出现在sys.platform中
platform.uname()
包含您需要的特定版本。