平台.linux_distribution()已经弃用 - 有哪些替代方案?

21

自 Python 3.5 开始,platform.linux_distribution()已被弃用,并计划在 Python 3.7 中移除。

有没有其他东西可以代替platform.linux_distribution()

platform.uname()无法提供我需要的信息。 我正在 Docker 容器中运行代码,platform.uname()返回主机机器而不是镜像的详细信息。

特别是,我正在构建便携式 Linux 发行版,并且想在标准 CentOS 5.11 分发上进行测试。我正在寻找一个简单的方式来识别操作系统以标识/标记构建结果。


该函数在Python 3.5和3.6中仍然存在。然而,在同一台机器上,与Python 3.4相比,我得到了不同的答案。 - jmd_dk
uname 命令将返回有关 Linux 内核的信息,而不是发行版。内核对于主机和容器(而不是镜像)是完全相同的。 - Klaus D.
请阅读Python bug以获取详细信息。如果可用,您可以尝试解析/etc/lsb-release以获取更准确的信息。 - rodrigo
2个回答

25
根据已弃用 platform.linux_distribution() 和 platform.dist()platform.linux_distribution()将被从Python 3.7中移除。它确实仍然存在于Python 3.6中。 推荐的替代方案是distro软件包。
安装该软件包后,您可以使用以下代码。
import distro
distro.linux_distribution()

在更新版本的distro软件包中,distro.linux_distribution()已被弃用。相反,该软件包提供了distro.id()distro.version()distro.name()


2
更精确的替换是 distro.linux_distribution(full_distribution_name=False) - msuchy
@msuchy 这不是 Python 平台方法 If full_distribution_name is true (default), the full distribution read from the OS is returned. 的等同替代。 - Cas
1
distro.linux_distribution也已被弃用。https://github.com/python-distro/distro/pull/296 - Iñigo Moreno

-1
另一个选项是platform.uname():
>>> import platform
>>> platform.uname()
uname_result(system='Linux', node='lensman', release='4.19.84', version='#1-NixOS SMP Tue Nov 12 18:21:46 UTC 2019', machine='x86_64', processor='')

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接