| Did you ever try poetry[1]? It is a great tool that I use in all my projects. It effectively solves dependency management for me in a very easy to use way. Dependency management using requirements.txt used to give me such a headache, now I just have a pyproject.toml that I know works. [tool.poetry.dependencies]
python = ">=3.8,<3.9"
pandas = "^1.4.3"
This basically means: Use the version of python between 3.8 and 3.9 and use any version higher than 1.4.3 for pandas.What I like about poetry is that it makes sure that the whole dependency graph of the packages that you add is correct. If it can not solve the graph, then it fails fast and it fails hard, which is a good thing. This is probably a very bad explainer of what poetry does, but be sure to check it out! :) [1] https://python-poetry.org/ |
The related issue, https://github.com/python-poetry/poetry/issues/496, has been open for 4 years with no movement.
The other issue with Poetry is that it uses its own pyproject.toml dependency listing format instead of the one standardized in the relevant PEP (https://peps.python.org/pep-0621/). This is understandable for historical reasons (Poetry was first written before this was standardized), but Poetry should have been updated to support the standard format.
A relatively minor issue, but the poetry shell command is also a footgun. It's presented as a way to configure your shell to activate the virtualenv for the project. In reality it's a very slow, barely functional terminal emulator running on top of your terminal, which will cause problems for any programs that assume a working terminal or talk to the tty directly.