poetry-auto-export
Automatically export dependencies to requirements.txt on every poetry lock
This plugin enables you to keep a requirements.txt file always up to date with your poetry.lock file. This is helpful if you want to use pip to install your dependencies somewhere, e.g.
- in CI/CD environments
- in docker containers
Usage
Add plugin configuration to your pyproject.toml. The options follow arguments for poetry export.
[tool.poetry-auto-export]
output = "requirements.txt"
without_hashes = true
without = ["dev"]
Then, run poetry commands as usual:
poetry lock
The requirements.txt file will be updated automatically.
The supported commands are:
- lock
- update
- add
- remove
Detect lock file changes
Suppose you're working on a project with CI/CD and several contributors. You want the CI/CD to depend on the requirements.txt file created by poetry-auto-export, but you need to make sure everyone updates the requirements.txt file correctly.
To make this easy, poetry-auto-export puts a SHA1 hash in a comment on top of requirements.txt file. In CI/CD you can quickly compute the hash and compare that with the comment without installing poetry or any other dependencies.
Here is an example python script that does this:
import hashlib
from pathlib import Path
lock_hash = hashlib.sha1(Path("poetry.lock").read_bytes()).hexdigest()
first_line = Path("requirements.txt").read_text().split("\n")[0]
if first_line != f"# poetry.lock hash: {lock_hash}":
raise ValueError(
"requirements.txt is out of date, use the `poetry-auto-export` plugin to update it!"
)
A more fancy version of the above script is shipped with this package as check_requirements_file.py.
You can also download it from the Github repository directly, e.g.
curl -O https://raw.githubusercontent.com/Ddedalus/poetry-auto-export/refs/heads/main/poetry_auto_export/check_requirements_file.py
Or pipe straight into python, for a quick one-liner:
curl -sSL https://raw.githubusercontent.com/Ddedalus/poetry-auto-export/refs/heads/main/poetry_auto_export/check_requirements_file.py | python3 -
Creating multiple export files
If you need to create multiple requirements files, e.g. dev-requirements.txt and prod-requirements.txt, use the following syntax:
[[tool.poetry-auto-export.exports]]
output = "dev-requirements.txt"
without = ["prod"]
[[tool.poetry-auto-export.exports]]
output = "prod-requirements.txt"
without = ["dev"]
Installation
This is a poetry plugin, so it's meant to be installed inside the global poetry environment, not your project environment like regular pacakges. See poetry's docs.
There are three ways of doing so.
The pipx way
If you are using pipx already, that's easy:
pipx inject poetry poetry-auto-export
The pip way
Otherwise, you can use the pip that comes with poetry. The difficulty is finding that pip! It's not the same one you get with poetry run pip.
Here is a best effort guess:
On Linux:
~/.local/share/pypoetry/venv/bin/pip install poetry-auto-export
On Windows:
%APPDATA%\pypoetry\venv\bin\pip install poetry-auto-export
The poetry way
For some reason, this is discouraged by poetry.
poetry self add poetry-auto-export
Roadmap and contributing
The primary goal of the project is to make it more convenient to work with poetry projects in CI/CD and docker. Contributions towards this goal are welcome!
Roadmap:
- more unit tests for the plugin
- integration tests for the plugin
- proper configuration parsing (note: typed dict and dataclasses can't support the
withoption, since it's a python keyword) - schema or exhaustive documentation of the supported configuration options
Metadata
Release files for poetry-auto-export 0.4.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| poetry_auto_export-0.4.4.tar.gz | 5.4 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| poetry_auto_export-0.4.4-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 12.5 kB
Release files / poetry_auto_export-0.4.4.tar.gz
| Download URL | poetry_auto_export-0.4.4.tar.gz |
|---|---|
| Size | 5.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6851a5ec868f016c89764e41ea39851d3fe13887deb24bb19963a76589f9f814
|
|
BLAKE2b-256 checksum How to use checksums |
3b5cd5ec9aeac06425f74bf3e158a3d79422b565602ebe75fb9e2f39d9797868
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.5.1 CPython/3.14.4 Linux/7.0.0-1017-azure
|
Release files / poetry_auto_export-0.4.4-py3-none-any.whl
| Download URL | poetry_auto_export-0.4.4-py3-none-any.whl |
|---|---|
| Size | 7.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
689b6d317665f86f9ad0b496cb2e52cd48aa4e43dba648dcb6f6d3bcab102c1d
|
|
BLAKE2b-256 checksum How to use checksums |
d830320dd7b9856ab7306c1c7b9c4cdb1de7a8b2bd83a5382d107233f184aa0b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.5.1 CPython/3.14.4 Linux/7.0.0-1017-azure
|
Security for poetry-auto-export 0.4.4
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.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.