我必须从Python脚本获取Linux发行版名称。dist平台模块中有一个方法:
dist
import platform platform.dist()
但是在我的Arch Linux下,它返回:
>>> platform.dist() ('', '', '')
为什么?我如何获得名字?
PS。我必须检查发行版是否基于Debian。
更新:我在这里找到Python网站,从2.6开始不推荐使用dist()。
>>> platform.linux_distribution() ('', '', '')
这对我在Ubuntu上有效:
('Ubuntu', '10.04', 'lucid')
然后strace,我通常会找出平台模块到底是做什么来找到发行版的,这就是这一部分:
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基本文件包。
/etc/lsb-release