我必须从Python脚本中获得Linux发行版的名称。平台模块中有一个dist方法:
import platform
platform.dist()但是在我的Arch Linux下,它返回:
>>> platform.dist()
('', '', '')为什么?我怎么知道名字?
PS。我得检查一下这个发行版是否基于Debian。
更新:我在这里发现了Python站点,从2.6开始就不再推荐dist()了。
>>> platform.linux_distribution()
('', '', '')发布于 2010-05-03 07:49:45
这在Ubuntu上适用于我:
('Ubuntu', '10.04', 'lucid')然后,我使用strace来了解平台模块究竟在做什么来查找发行版,下面是这样的部分:
open("/etc/lsb-release", O_RDONLY|O_LARGEFILE) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=102, ...}) = 0
fstat64(3, {st_mode=S_IFREG|0644, st_size=102, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb76b1000
read(3, "DISTRIB_ID=Ubuntu\nDISTRIB_RELEAS"..., 8192) = 102
read(3, "", 4096) = 0
read(3, "", 8192) = 0
close(3) = 0因此,有/etc/lsb-release包含这个信息,它来自Ubuntu的Debian基本文件包。
发布于 2010-05-03 07:45:24
这里是我发现的:
platform.linux_distribution 尝试确定Linux发行版名称的名称。
它说,从2.6开始,platform.dist就不再受欢迎了,您必须在Python2中使用platform.linux_distribution (但在Python3.5中也不推荐)。
发布于 2017-04-01 13:44:35
platform.linux_distribution没有识别某些发行版的原因是发行版本身提供版本相关信息的非标准化方式。
我编写了一个名为distro (现在由pip使用)的包,目的是取代distro.linux_distribution。它可以在许多发行版上工作,这些发行版在使用platform时可能返回奇怪的或空的元组。
https://github.com/nir0s/distro (distro,on pypi)
它提供了一个更详细的API来检索与发行有关的信息。
$ 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将在Python3.7中删除。
https://stackoverflow.com/questions/2756737
复制相似问题