hatch plugin to use pip-compile (or uv) to manage project dependencies and lockfiles.
The hatch-pip-compile plugin will automatically run pip-compile whenever your
environment needs to be updated. Behind the scenes, this plugin creates a lockfile
at requirements.txt (non-default lockfiles are located at
requirements/requirements-{env_name}.txt). Once the dependencies are resolved
the plugin will install the lockfile into your virtual environment and keep it
up-to-date.
Declare hatch-pip-compile as a dependency in your pyproject.toml file under the
[tool.hatch.env] table and hatch will automatically install it. You must also have
your environment type set to pip-compile (see Configuration).
-
pyproject.toml
[tool.hatch.env] requires = [ "hatch-pip-compile" ] [tool.hatch.envs.default] type = "pip-compile"
-
hatch.toml
[env] requires = [ "hatch-pip-compile" ] [envs.default] type = "pip-compile"
Set your environment type to pip-compile to use this plugin for the respective environment:
-
pyproject.toml
[tool.hatch.envs.default] type = "pip-compile"
-
hatch.toml
[envs.default] type = "pip-compile"
- lock-filename - changing the default lockfile path
- pip-compile-constraint - syncing dependency versions across environments
- Upgrading Dependencies - how to upgrade dependencies
- Using Hashes - how to include hashes in your lockfile
- Using uv instead of pip-compile - how to use
uvinstead ofpip-compile
The plugin gives you options to configure how lockfiles are generated and how they are installed into your environment.
The following example shows how to specify the pip-compile-hashes option
on your environment in your pyproject.toml file:
[tool.hatch.envs.default]
type = "pip-compile"
pip-compile-hashes = true| name | type | description |
|---|---|---|
| lock-filename | str |
The filename of the ultimate lockfile. default env is requirements.txt, non-default is requirements/requirements-{env_name}.txt |
| pip-compile-constraint | str |
An environment to use as a constraint file, ensuring that all shared dependencies are pinned to the same versions. |
| pip-compile-hashes | bool |
Whether to generate hashes in the lockfile. Defaults to false. |
| pip-compile-resolver | str |
Whether to use pip-compile or uv to resolve dependencies into the project. Defaults to pip-compile |
| pip-compile-args | list[str] |
Additional command-line arguments to pass to pip-compile-resolver |
| pip-compile-verbose | bool |
Set to true to run pip-compile in verbose mode instead of quiet mode, set to false to silence warnings |
| name | type | description |
|---|---|---|
| pip-compile-installer | str |
Whether to use pip, pip-sync, or uv to install dependencies into the project. Defaults to pip |
| pip-compile-install-args | list[str] |
Additional command-line arguments to pass to pip-compile-installer |