Skip to main content
Package facts provide information about installed packages across various package managers.

Package Manager Facts

Pyinfra includes facts for many package managers. Each returns a dictionary of installed packages with their versions.

Apt (Debian/Ubuntu)

Get installed apt packages:
Returns: dict[str, str] - Package name -> version

Yum (RHEL/CentOS)

Get installed yum packages:
Returns: dict[str, str] - Package name -> version

DNF (Fedora/RHEL 8+)

Get installed dnf packages:
Returns: dict[str, str] - Package name -> version

Apk (Alpine Linux)

Get installed apk packages:
Returns: dict[str, str] - Package name -> version

Brew (macOS)

Get installed Homebrew packages:
Returns: dict[str, str] - Package name -> version

Pkg (FreeBSD)

Get installed pkg packages:
Returns: dict[str, str] - Package name -> version

Pacman (Arch Linux)

Get installed pacman packages:
Returns: dict[str, str] - Package name -> version

Zypper (openSUSE)

Get installed zypper packages:
Returns: dict[str, str] - Package name -> version

Language Package Managers

Pip (Python)

Get installed pip packages:
Parameters:
  • virtualenv (str, optional) - Path to virtualenv
Returns: dict[str, str] - Package name -> version

Npm (Node.js)

Get installed npm packages:
Parameters:
  • directory (str, optional) - Project directory for local packages
Returns: dict[str, str] - Package name -> version

Gem (Ruby)

Get installed Ruby gems:
Returns: dict[str, str] - Package name -> version

Cargo (Rust)

Get installed Cargo packages:
Returns: dict[str, str] - Package name -> version

Pipx (Python Applications)

Get installed pipx packages:
Returns: dict[str, str] - Package name -> version

Usage Examples

Check Package Installed

Check Package Version

Distribution-Specific Packages

Python Virtual Environment

List Installed Packages

Check Multiple Package Managers

Complete Example

Here’s a comprehensive example using package facts:

Source Reference

Package facts are located in their respective fact files:
  • src/pyinfra/facts/apt.py - Debian/Ubuntu packages
  • src/pyinfra/facts/yum.py - RHEL/CentOS packages
  • src/pyinfra/facts/dnf.py - Fedora/RHEL 8+ packages
  • src/pyinfra/facts/apk.py - Alpine packages
  • src/pyinfra/facts/brew.py - macOS packages
  • src/pyinfra/facts/pip.py - Python packages
  • src/pyinfra/facts/npm.py - Node.js packages
  • src/pyinfra/facts/gem.py - Ruby packages
  • src/pyinfra/facts/cargo.py - Rust packages