检测Linux发行版版本的Python模块
有没有现成的Python模块可以用来检测当前安装的Linux发行版和版本呢?
比如说:
- RedHat Enterprise 5
- Fedora 11
- Suse Enterprise 11
- 等等……
我可以通过解析一些文件,比如/etc/redhat-release,自己写一个模块,但我想知道有没有现成的模块可以用?
谢谢,
伊凡
4 个回答
2
上面的回答在RHEL 5.x上不管用。最快的方法是在类似Red Hat的系统上查看/etc/redhat-release这个文件。每次你更新系统时,这个文件都会被更新,系统的小版本号升级时也会更新。
$ python
>>> open('/etc/redhat-release','r').read().split(' ')[6].split('.')
['5', '5']
如果你把分开的部分去掉,它就只会给你一个字符串。虽然没有你问的模块,但我觉得这个方法简单又优雅,可能对你有帮助。
3
我写了一个叫做 distro
的包(现在被 pip
使用),目的是替代 distro.linux_distribution
。这个包可以在很多不同的操作系统上使用,而这些系统在用 platform
时可能会返回一些奇怪的或者空的结果。
你可以在这里找到它:https://github.com/nir0s/distro (distro
,在 pypi 上)
这个包提供了一个更复杂的接口,可以用来获取与操作系统相关的信息。
$ python
Python 2.7.12 (default, Nov 7 2016, 11:55:55)
[GCC 6.2.1 20160830] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import distro
>>> distro.linux_distribution()
(u'Antergos Linux', '', u'ARCHCODE')
顺便提一下,platform.linux_distribution
会在 Python 3.7 中被移除。
19
去查一下平台模块的文档:http://docs.python.org/library/platform.html
举个例子:
>>> platform.uname() ('Linux', 'localhost', '2.6.31.5-desktop-1mnb', '#1 SMP Fri Oct 23 00:05:22 EDT 2009', 'x86_64', 'AMD Athlon(tm) 64 X2 Dual Core Processor 3600+') >>> platform.linux_distribution() ('Mandriva Linux', '2010.0', 'Official')