The following guide will help you migrate common
importlib_metadata aims to
replace the following
Other functionality from
pkg_resources is replaced by other
packages such as
importlib_metadata provides Entry points.
Compatibility note: entry points provided by importlib_metadata
do not have the following implicit behaviors found in those
Each EntryPoint is not automatically validated to match. To ensure each one is validated, invoke any property on the object (e.g.
EntryPoint.load(), no checks are performed to ensure the declared extras are installed. If this behavior is desired/required, it is left to the user to perform the check and install any dependencies. See importlib_metadata#368 for more details.
importlib_metadata does not provide support for dynamically
discovering or requiring distributions nor does it provide any
support for managing the “working set”. Furthermore,
importlib_metadata assumes that only one version of a given
distribution is discoverable at any time (no support for multi-version
installs). Any projects that require the above behavior needs to
provide that behavior independently.
importlib_metadata does aim to resolve metadata concerns late
such that any dynamic changes to package availability should be
In addition to the support for direct access to
importlib_metadata presents some top-level
functions for easy access to the most common metadata:
Distribution metadata queries the metadata fields from the distribution.
Distribution versions provides quick access to the distribution version.
Distribution requirements presents the requirements of the distribution.
Distribution files provides file-like access to the data blobs backing the metadata.
importlib_metadata provides functionality
Distribution.discover(...) return an iterable of Distributions
matching the indicated parameters.
distribution() function provides
access to a single distribution by name.