Optional Dependencies With Poetry
Some Python dependencies require build tools which can be problematic when running inside Docker or CI environment. Often these packages are also needed only in development or production so having them as optional dependencies can be really useful. I just learned that Poetry can do this.
First, install your dependency with
poetry add -D pywatchman --optional
Not sure if this step is needed, YMMV, but I needed to add a new section in the
pyproject.toml file and run
poetry update after:
[tool.poetry.extras] pywatchman = ["pywatchman"]
and now, when you do a normall install, the optional packages are not installed. If you want to install those, run:
poetry install -E pywatchman
This is very handy as I now can easily keep things like
uwsgi in my Poetry deps without worrying about their build dependencies in CI and/or local environments.
As a very long time user of pip-tools, I really like Poetry as a modern alternative.