Python 3.7及以上版本:如何确定Linux发行版?

时间:2017-12-18 17:48:50

标签: python linux python-3.x python-3.7

由于Python Docs明确指出platform.linux_distribution()是:

  

从版本3.5开始不推荐使用,将在版本3.7中删除。

通过Python检测Linux发行版的正确和面向未来的方法是什么?

3 个答案:

答案 0 :(得分:8)

您可以使用distro project

$ pip install distro
$ python
>>> import distro
>>> distro.linux_distribution(full_distribution_name=False)
('centos', '7.1.1503', 'Core')

该项目来自issue #1322,导致该功能被弃用。来自project README

  

它是Python原始platform.linux_distribution函数的更新替代实现,但它还提供了更多功能,不一定像命令行界面那样绑定Python

该方法已从platform库中删除,因为检测您使用的分发的正确方法更改的速度可能比Python发布时间表更快。从上面的错误报告:

  

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

答案 1 :(得分:1)

这将留给包裹。从这个变化的新内容:

  

现已弃用platform.dist()platform.linux_distribution()函数。 Linux发行版使用了太多不同的描述方式,所以功能留给了包。 (由Vajrasky Kok和Berker Peksag提供,发布于bpo-1322。)

您可以查看删除它的issue 1322进行更详细的讨论,还有a package there already

Python标准库不会是一个你可以执行此操作的地方,因为它会产生维护费用。

答案 2 :(得分:1)

根据Jim的回答,此功能将从Python中删除。 distro包似乎是推荐的选择:

$ 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')