An unofficial, importable pip API
pip is a command-line-tool, it does not have
an official, supported, importable
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.
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
this library can be used as a drop-in replacement for existing uses of
This goal means that any new API added here must have the following equivalents:
- some internal
pipAPI (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.
You can install
pip-api with either
pip or with
python -m pip install pip-api
conda install -c conda-forge pip-api
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
pipversion as a string, e.g.
Returns a list of all installed distributions as a
Distributionobject with the following attributes:
string): The name of the installed distribution
packaging.version.Version): The version of the installed distribution
string): The location of the installed distribution
bool): Whether the distribution is editable or not Optionally takes a
localparameter 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.Requirementobject (subclass of
packaging.requirements.Requirement) with the following attributes:
string): The name of the requirement.
set): A set of extras that the requirement specifies.
SpecifierSetof the version specified by the requirement.
Markerof the marker for the requirement. Can be
dict): A mapping of hashes for the requirement, corresponding to
bool): Whether the requirement is editable, corresponding to
str): The filename that the requirement originates from.
int): The source line that the requirement was parsed from.
Optionally takes an
optionsparameter to override the regex used to skip requirements lines. Optionally takes an
include_invalidparameter to return an
UnparsedRequirementin the event that a requirement cannot be parsed correctly. Optionally takes a
strict_hashesparameter to require that all requirements have associated hashes.
Returns the resulting as a string. Valid
As described above, but with an extra optional
pathsparameter to provide a list of locations to look for installed distributions. Attempting to use the
pip<19.2will result in a
This library is in use by a number of other tools, including:
Release history Release notifications | RSS feed
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.