dtcontrol requests old tqdm version
This issue is linked to an earlier one that was also about version mismatches (#12 (closed))
When I tried to install dtcontrol in a python3.9 environment, it requested version 4.62.3 of tqdm while another package requested version 4.64.1. Three weeks ago the same setup routine worked flawlessly so I guess that one of the packages I want to install updated its dependencies.
ERROR: dtcontrol 2.1.4 has requirement tqdm==4.62.3, but you'll have tqdm 4.64.1 which is incompatible.
When I run dtcontrol, the following error occurs:
$ dtcontrol
Traceback (most recent call last):
File "/home/jonis/git/build_and_improve_fdir_temp/python3-venv/bin/dtcontrol", line 8, in <module>
sys.exit(main())
File "/home/jonis/git/build_and_improve_fdir_temp/python3-venv/lib/python3.8/site-packages/dtcontrol/cli.py", line 549, in main
version = pkg_resources.require("dtcontrol")[0].version
File "/home/jonis/git/build_and_improve_fdir_temp/python3-venv/lib/python3.8/site-packages/pkg_resources/__init__.py", line 900, in require
needed = self.resolve(parse_requirements(requirements))
File "/home/jonis/git/build_and_improve_fdir_temp/python3-venv/lib/python3.8/site-packages/pkg_resources/__init__.py", line 791, in resolve
raise VersionConflict(dist, req).with_context(dependent_req)
pkg_resources.ContextualVersionConflict: (tqdm 4.64.1 (/home/jonis/git/build_and_improve_fdir_temp/python3-venv/lib/python3.8/site-packages), Requirement.parse('tqdm==4.62.3'), {'dtcontrol'})
For context, the install command looked like this:
python3 -m venv python3-venv
source python3-venv/bin/activate
pip install pycairo PyGObject
pip install xdot pydot regex networkx tqdm numpy dtcontrol
Is there a specific reason for defining the required versions of the dependencies with ==
instead of >=
in the setup.py?
install_requires=[
'dd==0.5.7',
'Flask==2.0.3',
'pandas==1.4.1',
'ruamel.yaml==0.17.21',
'scikit-learn==1.0.2',
'sympy==1.9',
'tabulate==0.8.9',
'tqdm==4.62.3'
],
Personally, I would prefer a setup.py
that only specifies minimum versions and wait for errors to happen in case newer versions of the dependencies cause errors.