9

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

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

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

4

3 回答 3

11

您可以使用该distro项目

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

该项目来自问题 #1322,导致该功能被弃用。从项目自述文件

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

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

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

于 2017-12-18T17:57:46.617 回答
1

这将留给一个包裹。在此更改的新增内容中:

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

您可以查看将其删除的issue 1322以进行更详细的讨论,那里也有一个包

Python 标准库不会是您能够执行此操作的地方,因为它会产生维护开销。

于 2017-12-18T17:54:23.037 回答
1

根据 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')
于 2017-12-18T18:00:00.063 回答