Poetry is quite a novel approach to dependency and virtual environment management in Python. It is an open-source project that aims to provide a more predictable and convenient environment for working with the Python packaging ecosystem.
As Poetry is a package on PyPI, you can install it using pip:
$ pip install --user poetry
Poetry takes care of creating Python virtual environments so it should not be installed inside of a virtual
environment itself. You can install it in either user site-packages or global site-packages although user ,site-packages is the recommended option.
Depending on your system configuration it will be either the global site-packages directory or the user site-packages directory. To avoid this ambiguity, the Poetry project creators recommend using an alternative bootstrapping method.
On macOS, Linux, and other POSIX-compatible systems Poetry can be installed using the curl utility:
$ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python
On Windows it can be installed using PowerShell:
> (Invoke-WebRequest -Uri https://raw.githubusercontent.com/pythonpoetry/poetry/master/get-poetry.py -UseBasicParsing).Content | python -
Once installed, Poetry can be used to:
• Create new Python projects together with virtual environments
• Initialize existing projects with a virtual environment
• Manage project dependencies
• Package libraries
To create a completely new project with Poetry, you can use the poetry new command as in the following example:
$ poetry new project-test
[tool.poetry] name = "project-test" version = "0.1.0" description = "" authors = ["Derya Cortuk <[email protected]>"] [tool.poetry.dependencies] python = "^3.9" [tool.poetry.dev-dependencies] pytest = "^5.2" [build-system] requires = ["poetry-core>=1.0.0"] build-backend = "poetry.core.masonry.api"
• [tool.poetry]: This is a set of basic project metadata like name, version
description, and author. This information is necessary if you would like to
publish your project as a package on PyPI.
• [tool.poetry.dependencies]: This is a list of project dependencies. On fresh
projects, it lists only the Python version but can also include all package
versions that normally would be described in the requirements.txt file.
• [tool.poetry.dev-dependencies]: This is a list of dependencies that require
local development, like testing frameworks or productivity tools. It is
common practice to have a separate list of such dependencies as they are
usually not required in production environments.
• [build-system]: Describes Poetry as a build system used to manage the
You can find more information about advanced usage of Poetry in
the official documentation under https://python-poetry.org.