Skip to content

A much more elaborate replacement for removed Python's `platform.linux_distribution()` method

License

Notifications You must be signed in to change notification settings

python-distro/distro

Repository files navigation

ld

Build Status PyPI PypI

The ld (linux distribution) package provides information about the Linux distribution it runs on, such as a reliable machine-readable ID, or version information.

It is a renewed alternative implementation for Python's original platform.linux_distribution function, but it also provides much more functionality. An alternative implementation became necessary because Python 3.5 deprecated this function, and Python 3.7 is expected to remove it altogether. Its predecessor function platform.dist was already deprecated since Python 2.6 and is also expected to be removed in Python 3.7. Still, there are many cases in which access to that information is needed. See Python issue 1322 for more information.

The ld package implements a robust and inclusive way of retrieving the information about a Linux distribution based on new standards and old methods, namely from these data sources (from high to low precedence):

  • The os-release file /etc/os-release, if present.
  • The output of the lsb_release command, if available.
  • The distro release file (/etc/*(-|_)(release|version)), if present.

ld is tested on Python 2.6, 2.7 and 3.5.

Installation

pip install ld

For dev:

pip install https://github.com/nir0s/ld/archive/master.tar.gz

Distribution Support

The following distributions are tested (this is by no means an exhaustive list of supported distros as any distro adhering to the same standards should work):

  • Arch
  • CentOS 5/7
  • Debian 8
  • Exherbo
  • Fedora 23
  • Mageia 5
  • openSUSE Leap 42
  • Oracle Linux Server 7
  • RHEL 6/7
  • Slackware 14
  • Ubuntu 14

Usage

python
>>> import ld
>>> ld.linux_distribution(full_distribution_name=False)
'('centos', '7.1.1503', 'Core')'

Several more functions are available. For a complete description of the API, see the latest API documentation.

Contributions

Pull requests are always welcome to deal with specific distributions or just for general merriment.

Reference implementations for supporting additional distributions and file formats can be found here: