Skip to main content

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 with option, 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)

Source distribution for poetry-auto-export 0.4.4
File Size Uploaded Provenance
poetry_auto_export-0.4.4.tar.gz 5.4 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for poetry-auto-export 0.4.4
File Interpreter ABI Platform
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.

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