poetry

poetry is the long waited solution for dependency management and packaging that checks lots of boxes

virtual env

  • virtual env as easy as poetry shell

deps and locking

  • add poetry add pkgname
  • remove poetry remove pkgname

building packages

poetry build to build packages (tarball/wheels)

publishing packages

poetry publish to publish your package to pypi

check dependency tree

Using poetry show -t you will see all of the installed packages and the implicit dependencies

check poetry configuration

to list the configurations of the project you can use poetry config --list

Example output

~> poetry config --list

virtualenvs.create = true
virtualenvs.in-project = true
virtualenvs.path = "{cache-dir}/virtualenvs"  # /home/xmonader/.cache/pypoetry/virtualenvs

Why not pipenv?

Pipenv doesn't help with building packages nor publishing them. you will need another workflow for building packages and maintaing requirements.txt too aside from pipenv.toml.

Generating requirements.txt file

You can do poetry run make requirements to generate the requirements.txt file.