Python packaging and dependency management made easy
Poetry
Deterministic builds
Develop
Poetry comes with all the tools you might need to manage your projects in a deterministic way.
$ poetry add pendulum
Using version ^2.0.5 for pendulum
Updating dependencies
Resolving dependencies... (1.5s)
Package operations: 4 installs, 0 updates, 0 removals
- Installing six (1.13.0): Downloading... 25%
- Updating pytzdata (2019.3 -> 2020.4): Installing...
- Installing pendulum (2.0.5)
Writing lock file
Package with ease
Build
Easily build and package your projects with a single command.
$ poetry build
Building poetry (1.0.0)
- Building sdist
- Built poetry-1.0.0.tar.gz
- Building wheel
- Built poetry-1.0.0-py2.py3-none-any.whl
Supports source distribution and wheels.
Share your work
Publish
Make your work known by publishing it to PyPI.
$ poetry publish
Publishing poetry (1.0.0) to PyPI
- Uploading poetry-1.0.0.tar.gz 100%
- Uploading poetry-1.0.0-py2.py3-none-any.whl 58%
You can also publish on private repositories.
Check the state of your dependencies
Track
Having an insight of your project's dependencies is just one command away.
$ poetry show --tree
requests-toolbelt 0.8.0 A utility belt for advanced users...
└── requests <3.0.0,>=2.0.1
├── certifi >=2017.4.17
├── chardet >=3.0.2,<3.1.0
├── idna >=2.5,<2.7
└── urllib3 <1.23,>=1.21.1
$ poetry show --latest
pendulum 2.0.4 1.4.5 Python datetimes made easy.
django 1.11.11 2.0.3 A high-level Python Web framework ...
requests 2.18.4 2.18.4 Python HTTP for Humans.
Dependency resolver
Poetry comes with an exhaustive dependency resolver, which will always find a solution if it exists.
And get a detailed explanation if no solution exists.
Isolation
Poetry either uses your configured virtualenvs or creates its own to always be isolated from your system.
The behavior is configurable.
Intuitive CLI
Poetry's commands are intuitive and easy to use, with sensible defaults while still being configurable.
It's also extensible with plugin system.