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¶
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:
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.