browniebroke.com

Convert Python requirements to Poetry format

7 January 2021 • 2 min read
Edit on Github

I recently wrote about migrating a Python project to Poetry, however, this guide is quite manual process. I recently came across dephell, which seems to be able to automate some part of it. I wanted to check out how it might help for this follow-up post.

Migrate setup.py stuff

First step is to migrate meta-data and direct dependencies specified in setup.py file:

dephell deps convert \
  --from=setup.py \
  --to-format=poetry \
  --to-path=pyproject.toml

This converts some package metadata and add the dependencies which are listed in your setup.py.

Convert development dependencies

The development dependencies are located in requirements.in (as I used pip-tools), and to not overwrite the dependencies from the previous step, let’s write them to a temporary file:

dephell deps convert \
  --from=requirements.in \
  --to-format=poetry \
  --to-path=pyproject-dev.toml

Create a new section for development dependencies in pyproject.toml and move over dependencies from pyproject-dev.toml:

[tool.poetry.dev-dependencies]
# copy deps from pyproject-dev.toml here

Now you can get rid of the temporary pyproject-dev.toml file.

Finish

As far as I’m aware, that is as far as this tool will get you. The pyproject.toml file should almost be ready for Poetry, you can try running poetry install and fix the remaining issues.

In my case, here are the things I needed to adjust:

Nevertheless, this tool could speed up migration for projects with lots of dependencies.

Liked it? Please share it!