| CARVIEW |
Introduction
Introduction #
Poetry is a tool for dependency management and packaging in Python. It allows you to declare the libraries your project depends on and it will manage (install/update) them for you. Poetry offers a lockfile to ensure repeatable installs, and can build your project for distribution.
System requirements #
Poetry requires Python 3.9+. It is multi-platform and the goal is to make it work equally well on Linux, macOS and Windows.
Installation #
pipx is used to install Python CLI applications globally while still isolating them in virtual environments.
pipx will manage upgrades and uninstalls when used to install Poetry.
-
Install pipx
If
pipxis not already installed, you can follow any of the options in the official pipx installation instructions. Any non-ancient version ofpipxwill do. -
Install Poetry
pipx install poetry -
Install Poetry (advanced)
NoteYou can skip this step, if you simply want the latest version and already installed Poetry as described in the previous step. This step details advanced usages of this installation method. For example, installing Poetry from source, having multiple versions installed at the same time etc.pipxcan install different versions of Poetry, using the same syntax as pip:pipx install poetry==1.8.4pipxcan also install versions of Poetry in parallel, which allows for easy testing of alternate or prerelease versions. Each version is given a unique, user-specified suffix, which will be used to create a unique binary name:pipx install --suffix=@1.8.4 poetry==1.8.4 poetry@1.8.4 --versionpipx install --suffix=@preview --pip-args=--pre poetry poetry@preview --versionFinally,
pipxcan install any valid pip requirement spec, which allows for installations of the development version fromgit, or even for local testing of pull requests:pipx install --suffix @main git+https://github.com/python-poetry/poetry.git@main pipx install --suffix @pr1234 git+https://github.com/python-poetry/poetry.git@refs/pull/1234/head -
Update Poetry
pipx upgrade poetry -
Uninstall Poetry
pipx uninstall poetry
We provide a custom installer that will install Poetry in a new virtual environment and allows Poetry to manage its own environment.
-
Install Poetry
The installer script is available directly at install.python-poetry.org, and is developed in its own repository. The script can be executed directly (i.e. ‘curl python’) or downloaded and then executed from disk (e.g. in a CI environment).
Linux, macOS, Windows (WSL)
curl -sSL https://install.python-poetry.org | python3 -Windows (Powershell)
(Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | py -NoteIf you have installed Python through the Microsoft Store, replacepywithpythonin the command above. -
Install Poetry (advanced)
NoteYou can skip this step, if you simply want the latest version and already installed Poetry as described in the previous step. This step details advanced usages of this installation method. For example, installing Poetry from source, using a pre-release build, configuring a different installation location etc.By default, Poetry is installed into a platform and user-specific directory:
~/Library/Application Support/pypoetryon macOS.~/.local/share/pypoetryon Linux/Unix.%APPDATA%\pypoetryon Windows.
If you wish to change this, you may define the
$POETRY_HOMEenvironment variable:curl -sSL https://install.python-poetry.org | POETRY_HOME=/etc/poetry python3 -If you want to install prerelease versions, you can do so by passing the
--previewoption to the installation script or by using the$POETRY_PREVIEWenvironment variable:curl -sSL https://install.python-poetry.org | python3 - --preview curl -sSL https://install.python-poetry.org | POETRY_PREVIEW=1 python3 -Similarly, if you want to install a specific version, you can use
--versionoption or the$POETRY_VERSIONenvironment variable:curl -sSL https://install.python-poetry.org | python3 - --version 1.8.4 curl -sSL https://install.python-poetry.org | POETRY_VERSION=1.8.4 python3 -You can also install Poetry from a
gitrepository by using the--gitoption:curl -sSL https://install.python-poetry.org | python3 - --git https://github.com/python-poetry/poetry.git@mainIf you want to install different versions of Poetry in parallel, a good approach is the installation with pipx and suffix.
-
Add Poetry to your PATH
The installer creates a
poetrywrapper in a well-known, platform-specific directory:$HOME/.local/binon Unix.%APPDATA%\Python\Scriptson Windows.$POETRY_HOME/binif$POETRY_HOMEis set.
If this directory is not present in your
$PATH, you can add it in order to invoke Poetry aspoetry.Alternatively, the full path to the
poetrybinary can always be used:~/Library/Application Support/pypoetry/venv/bin/poetryon macOS.~/.local/share/pypoetry/venv/bin/poetryon Linux/Unix.%APPDATA%\pypoetry\venv\Scripts\poetryon Windows.$POETRY_HOME/venv/bin/poetryif$POETRY_HOMEis set.
-
Use Poetry
Once Poetry is installed and in your
$PATH, you can execute the following:poetry --versionIf you see something like
Poetry (version 2.0.0), your installation is ready to use! -
Update Poetry
Poetry is able to update itself when installed using the official installer.
WarningEspecially on Windows,self updatemay be problematic so that a re-install with the installer should be preferred.poetry self updateIf you want to install pre-release versions, you can use the
--previewoption.poetry self update --previewAnd finally, if you want to install a specific version, you can pass it as an argument to
self update.poetry self update 1.8.4 -
Uninstall Poetry
If you decide Poetry isn’t your thing, you can completely remove it from your system by running the installer again with the
--uninstalloption or by setting thePOETRY_UNINSTALLenvironment variable before executing the installer.curl -sSL https://install.python-poetry.org | python3 - --uninstall curl -sSL https://install.python-poetry.org | POETRY_UNINSTALL=1 python3 -
Poetry can be installed manually using pip and the venv module. By doing so you will essentially perform the steps carried
out by the official installer. As this is an advanced installation method, these instructions are Unix-only and omit specific
examples such as installing from git.
The variable $VENV_PATH will be used to indicate the path at which the virtual environment was created.
python3 -m venv $VENV_PATH
$VENV_PATH/bin/pip install -U pip setuptools
$VENV_PATH/bin/pip install poetry
Poetry will be available at $VENV_PATH/bin/poetry and can be invoked directly or symlinked elsewhere.
To uninstall Poetry, simply delete the entire $VENV_PATH directory.
Unlike development environments, where making use of the latest tools is desirable, in a CI environment reproducibility should be made the priority. Here are some suggestions for installing Poetry in such an environment.
Version pinning
Whatever method you use, it is highly recommended to explicitly control the version of Poetry used, so that you are able to upgrade after performing your own validation. Each install method has a different syntax for setting the version that is used in the following examples.
Using pipx
Just as pipx is a powerful tool for development use, it is equally useful in a CI environment
and should be one of your top choices for use of Poetry in CI.
pipx install poetry==2.0.0
Using install.python-poetry.org
Downloading a copy of the installer script to a place accessible by your CI pipelines (or maintaining a copy of the repository) is strongly suggested, to ensure your pipeline’s stability and to maintain control over what code is executed.
By default, the installer will install to a user-specific directory. In more complex pipelines that may make accessing
Poetry difficult (especially in cases like multi-stage container builds). It is highly suggested to make use of
$POETRY_HOME when using the official installer in CI, as that way the exact paths can be controlled.
export POETRY_HOME=/opt/poetry
python3 install-poetry.py --version 2.0.0
$POETRY_HOME/bin/poetry --version
Using pip (aka manually)
For maximum control in your CI environment, installation with pip is fully supported and something you should
consider. While this requires more explicit commands and knowledge of Python packaging from you, it in return offers the
best debugging experience, and leaves you subject to the fewest external tools.
export POETRY_HOME=/opt/poetry
python3 -m venv $POETRY_HOME
$POETRY_HOME/bin/pip install poetry==2.0.0
$POETRY_HOME/bin/poetry --version
pip, ensure you have Poetry installed into an isolated environment that is not the same
as the target environment managed by Poetry. If Poetry and your project are installed into the same environment, Poetry
is likely to upgrade or uninstall its own dependencies (causing hard-to-debug and understand errors).Enable tab completion for Bash, Fish, or Zsh #
poetry supports generating completion scripts for Bash, Fish, and Zsh.
See poetry help completions for full details, but the gist is as simple as using one of the following:
Bash #
Auto-loaded (recommended) #
poetry completions bash >> ~/.bash_completion
Lazy-loaded #
poetry completions bash > ${XDG_DATA_HOME:-~/.local/share}/bash-completion/completions/poetry
Fish #
poetry completions fish > ~/.config/fish/completions/poetry.fish
Zsh #
poetry completions zsh > ~/.zfunc/_poetry
You must then add the following lines in your ~/.zshrc, if they do not already exist:
fpath+=~/.zfunc
autoload -Uz compinit && compinit
Oh My Zsh #
mkdir $ZSH_CUSTOM/plugins/poetry
poetry completions zsh > $ZSH_CUSTOM/plugins/poetry/_poetry
You must then add poetry to your plugins array in ~/.zshrc:
plugins(
poetry
...
)
Prezto #
poetry completions zsh > ~/.zprezto/modules/completion/external/src/_poetry
If completions still don’t work, try removing ~/.cache/prezto/zcompcache and starting a new shell.