Python3.7及以上版本:如何确定Linux发行版?

Python3.7及以上版本:如何确定Linux发行版?,python,linux,python-3.x,python-3.7,Python,Linux,Python 3.x,Python 3.7,由于明确声明platform.linux\u distribution()是: 自3.5版起已弃用,将在3.7版中删除 通过Python检测Linux发行版的正确且经得起未来考验的方法是什么?这将留给软件包。来自此更改的“新增内容”条目: platform.dist()和platform.linux\u发行版()函数现在已被弃用。Linux发行版使用了太多不同的方式来描述它们自己,所以功能留给了一个包。(在bpo-1322中由金刚石角和伯克·佩克萨提供。) 你可以看一看删除它进行更详细的讨论,还

由于明确声明
platform.linux\u distribution()
是:

自3.5版起已弃用,将在3.7版中删除


通过Python检测Linux发行版的正确且经得起未来考验的方法是什么?

这将留给软件包。来自此更改的“新增内容”条目:

platform.dist()
platform.linux\u发行版()
函数现在已被弃用。Linux发行版使用了太多不同的方式来描述它们自己,所以功能留给了一个包。(在bpo-1322中由金刚石角和伯克·佩克萨提供。)

你可以看一看删除它进行更详细的讨论,还有

由于Python标准库会带来维护开销,因此您无法在该库中执行此操作。

您可以使用:

这个项目是从中产生的,这导致了该函数的弃用。从:

它是Python最初的
平台.linux\u发行版
功能的更新替代实现,但它还提供了更多的功能,这些功能不一定像命令行界面那样与Python绑定

该方法已从
platform
库中删除,因为检测您使用的发行版的正确方法的更改速度快于Python发行计划。从上述错误报告中:

stdlib并不是一个适合经常改变这种情况的地方。看看我们在过去几年中看到了多少半标准。在一个缓慢移动的代码库(如Python stdlib)中尝试遵循这些是没有意义的。最好将功能放在PyPI模块中,该模块可以更频繁地更新


根据Jim的回答,这个功能将从Python中删除。该方案似乎是推荐的备选方案:

$ pip3 install --user distro

$ python3
Python 3.6.3 (default, Oct  9 2017, 12:07:10) 
[GCC 7.2.1 20170915 (Red Hat 7.2.1-2)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import distro
>>> distro.linux_distribution()
('Fedora', '27', 'Twenty Seven')

我认为他们应该说“发行版负责实现这一功能”,而不是反对它。这并不是说他们没有按原样做所有的更改。@IgnacioVazquez Abrams:那么你更愿意让人们保持那种高高在上的状态吗?@MartijnPieters:如果它被实现为一个名称空间包,那么它就可以坐在文件系统中等待安装。@IgnacioVazquez Abrams:我不确定我在跟踪你。我完全同意pip安装一个额外的依赖项;无论我是如何安装Python的,这都是一致和相同的体验。为什么要求Linux发行版必须为此制作插件?@MartijnPieters:我很难想象一个真正大小的发行版还没有对Python有某种依赖性。这只是Thnx的一个扩展,供您回答和理解。我没想到这个问题这么快就引起这么多关注。如果Python文档与根本问题(1322)有某种联系,可能会更清楚。现在它只是说该函数已被弃用,没有任何进一步的解释。
$ pip3 install --user distro

$ python3
Python 3.6.3 (default, Oct  9 2017, 12:07:10) 
[GCC 7.2.1 20170915 (Red Hat 7.2.1-2)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import distro
>>> distro.linux_distribution()
('Fedora', '27', 'Twenty Seven')