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 value: 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¶
Default value: (empty string)
Additional arguments passed to python -m venv.
Dependencies¶
Whether the Python interpreter needs to be included in the snap depends on its
confinement. Specifically:
Projects with
strictordevmodeconfinement can safely use the base snap’s interpreter, so they typically do not need to include Python.Projects with
classicconfinement cannot use the base snap’s interpreter and thus must always bundle it (typically viastage-packages).In both cases, a specific/custom Python installation can always be included in the snap. This can be useful, for example, when using a different Python version or building an interpreter with custom flags.
Snapcraft will prefer an included interpreter over the base’s, even for projects
with strict and devmode confinement.
How it works¶
During the build step, the plugin performs the following actions:
It creates a virtual environment directly into the
${CRAFT_PART_INSTALL}directory.It uses poetry export to create a
requirements.txtfile in the project’s build directory.It uses pip to install the packages referenced in
requirements.txtinto the virtual environment, without any additional dependencies.It uses pip to install the source package without any additional dependencies.
It runs pip check to ensure the virtual environment is consistent.