检查 Linux 发行版名称

新手上路,请多包涵

我必须从 Python 脚本中获取 Linux 发行版名称。平台模块中有一个 dist 方法:

 import platform
platform.dist()

但在我的 Arch Linux 下它返回:

 >>> platform.dist()
('', '', '')

为什么?我怎样才能得到这个名字?

附言。我必须检查发行版是否基于 Debian。


更新:我在这里发现 Python 站点,从 2.6 开始不推荐使用 dist()。

 >>> platform.linux_distribution()
('', '', '')

原文由 Max Frai 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 681
2 个回答

这在 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 基础文件包。

原文由 BjoernD 发布,翻译遵循 CC BY-SA 3.0 许可协议

是我发现的:

 platform.linux_distribution

尝试确定 Linux 操作系统分发名称的名称。

它说 platform.dist 自 2.6 以来已弃用,您必须在 Python 2 中使用 platform.linux_distribution (但在 Python 3.5 中也已弃用)。

原文由 nc3b 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏