由于Python Docs明确指出platform.linux_distribution()
是:
从版本3.5开始不推荐使用,将在版本3.7中删除。
通过Python检测Linux发行版的正确和面向未来的方法是什么?
答案 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')