Skip to main content

GitHub - License PyPI - Python Version PyPI - Package Version Conda - Platform Conda (channel only) Conda Recipe

Since pip is a command-line-tool, it does not have an official, supported, importable API.

However, this does not mean that people haven't tried to import pip, usually to end up with much headache when pip's maintainers do routine refactoring.

Goal

The goal of this project is to provide an importable pip API, which is fully compliant with the recommended method of using pip from your program.

How? By providing an importable API that wraps command-line calls to pip, this library can be used as a drop-in replacement for existing uses of pip's internal API.

Scope

This goal means that any new API added here must have the following equivalents:

  • some internal pip API (or combination of internal APIs)
  • some CLI calls (or combination of CLI calls)

Any functionality that is not currently possible from internal pip API or CLI calls is out of scope.

Installation

You can install pip-api with either pip or with conda.

With pip:

python -m pip install pip-api

With conda:

conda install -c conda-forge pip-api

Supported Commands

Not all commands are supported in all versions of pip and on all platforms. If the command you are trying to use is not compatible, pip_api will raise a pip_api.exceptions.Incompatible exception for your program to catch.

Available with all pip versions:

  • pip_api.version()

    Returns the pip version as a string, e.g. "9.0.1"

  • pip_api.installed_distributions(local=False)

    Returns a list of all installed distributions as a Distribution object with the following attributes:

    • Distribution.name (string): The name of the installed distribution
    • Distribution.version (packaging.version.Version): The version of the installed distribution
    • Distribution.location (string): The location of the installed distribution
    • Distribution.editable (bool): Whether the distribution is editable or not Optionally takes a local parameter to filter out globally-installed packages
  • pip_api.parse_requirements(filename, options=None, include_invalid=False, strict_hashes=False)

    Takes a path to a filename of a Requirements file. Returns a mapping from package name to a pip_api.Requirement object (subclass of packaging.requirements.Requirement) with the following attributes:

    • Requirement.name (string): The name of the requirement.
    • Requirement.extras (set): A set of extras that the requirement specifies.
    • Requirement.specifier (packaging.specifiers.SpecifierSet): A SpecifierSet of the version specified by the requirement.
    • Requirement.marker (packaging.markers.Marker): A Marker of the marker for the requirement. Can be None.
    • Requirement.hashes (dict): A mapping of hashes for the requirement, corresponding to --hash=... options.
    • Requirement.editable (bool): Whether the requirement is editable, corresponding to -e ...
    • Requirement.filename (str): The filename that the requirement originates from.
    • Requirement.lineno (int): The source line that the requirement was parsed from.

    Optionally takes an options parameter to override the regex used to skip requirements lines. Optionally takes an include_invalid parameter to return an UnparsedRequirement in the event that a requirement cannot be parsed correctly. Optionally takes a strict_hashes parameter to require that all requirements have associated hashes.

  • pip_api.hash(filename, algorithm='sha256')

    Returns the resulting hash digest as a string. Valid algorithm parameters are 'sha256', 'sha384', and 'sha512'

  • pip_api.installed_distributions(local=False, paths=[])

    As described above, but with an extra optional paths parameter to provide a list of locations to look for installed distributions. Attempting to use the paths parameter with pip<19.2 will result in a PipError.

Use cases

This library is in use by a number of other tools, including:

  • pip-audit, to analyze dependencies for known vulnerabilities
  • pytest-reqs, to compare requirements files with test dependencies
  • hashin, to add hash pinning to requirements files
  • ...and many more.

Metadata

Release files for pip-api 0.0.35

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pip-api 0.0.35
File Size Uploaded
pip_api-0.0.35.tar.gz 123.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pip-api 0.0.35
File Interpreter ABI Platform
pip_api-0.0.35-py3-none-any.whl Python 3 none any Details

Total release size: 247.8 kB

Release files / pip_api-0.0.35.tar.gz

Download URL pip_api-0.0.35.tar.gz
Size 123.9 kB
Tags Source
SHA-256 checksum
How to use checksums
14dea05d7b3b68f4c7582213e3ae8932bbba8e1f754bf06b95263d5fa6ab4363
BLAKE2b-256 checksum
How to use checksums
fc0847dfc28aa16ef0dbc38dd7c6e4fe24d124c3ed3a722a4a3e5021584a588c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 8, 2026.

Transparency log

Release files / pip_api-0.0.35-py3-none-any.whl

Download URL pip_api-0.0.35-py3-none-any.whl
Size 123.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
66990d0da25378555cbb538db79384bab92d4617c6350dfd7a2126ba2a3a9894
BLAKE2b-256 checksum
How to use checksums
1d2ed424c5b5877be862dd9a2c8b7e9ddb13382bb25e132e6dd50cc09c0a7dde
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 8, 2026.

Transparency log
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page