我必須從Python腳本中獲取Linux發行版名稱。dist
平台模塊中有一個方法:
import platform platform.dist()
但在我的Arch Linux下它返回:
>>> platform.dist() ('', '', '')
為什么?我怎么能得到這個名字?
PS。我必須檢查分發是否是基於Debian的。
更新:我在這里找到了Python站點,自2.6以來,dist()已被棄用。
>>> platform.linux_distribution() ('', '', '')
解決方案
這對我在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基礎文件包。
本文首發於Python黑洞網,博客園同步跟新