Poetry plugin¶
The Poetry plugin can be used for Python projects that use the Poetry build system.
Keys¶
This plugin provides the following unique keys.
poetry-export-extra-args:¶
Type: list of strings
Extra arguments to pass at the end of the poetry export command.
poetry-pip-extra-args:¶
Type: list of strings
Extra arguments to pass to pip install when installing dependencies.
poetry-with:¶
Type: list of strings
Dependency groups to include. By default, only the main dependencies are included.
Environment variables¶
This plugin also sets environment variables in the build environment. User-set
environment variables will override these values. Users may also set environment
variables to configure Poetry using the
build-environment key.
PARTS_PYTHON_INTERPRETER¶
Default: python3
Either the interpreter binary to search for in PATH or an absolute path to
the interpreter (e.g. ${CRAFT_STAGE}/bin/python).
PARTS_PYTHON_VENV_ARGS¶
Additional arguments passed to python -m venv.
Dependencies¶
Python¶
By default this plugin uses the system Python when available and appropriate to
use, using the same logic as the
Python plugin. If a different interpreter is
desired, it must be made available in the build environment (including the venv
module) and its path must be included in the PATH environment variable.
Use of python3-<python-package> in stage-packages will force the inclusion
of the Python interpreter.
Poetry¶
By default, this plugin gets Poetry from the python3-poetry package on the build
system. If that is not desired (for example, if a newer version of Poetry is
required), a poetry-deps part can install poetry in the build system. Any parts
that use the Poetry plugin must run after the poetry-deps part:
parts:
poetry-deps:
plugin: nil
build-packages:
- curl
- python3
build-environment:
- POETRY_VERSION: "1.8.0"
override-pull: |
curl -sSL https://install.python-poetry.org | python3 -
my-project:
plugin: poetry
source: .
after: [poetry-deps]
How it works¶
During the build step, the plugin performs the following actions:
Create a virtual environment directly into the
${CRAFT_PART_INSTALL}directory.Use
poetry exportto create arequirements.txtfile in the project’s build directory.Use
pipto install the packages referenced inrequirements.txtinto the virtual environment, without any additional dependencies.Use
pipto install the source package without any additional dependencies.Run
pip checkto ensure the virtual environment is consistent.