Reputation: 3955
When I run pip wheel sentry-sdk
it downloads the following wheel files:
certifi-2020.6.20-py2.py3-none-any.whl
sentry_sdk-0.18.0-py2.py3-none-any.whl
urllib3-1.25.10-py2.py3-none-any.whl
Where sentry_sdk-0.18.0-py2.py3-none-any.whl
is the lib I actually want to use and the other ones are transitive dependencies required by this lib to work. I understand that the file is coming from PyPI however what I do not understand is how pip wheel
is choosing the version of the aforementioned transitive dependencies.
My underlying problem is that the resolved version of the urllib3
clashes with another one already added to the pex file of the project I'm working on (I'm using Bazel to generate the pex) I'm considering downgrading the version of urllib3
to match my project's existing one. Looking at the setup.py
from the sentry-sdk
in GitHub it says it only requires it to be greater than 1.10.0
("urllib3>=1.10.0"
) so I think the downgrade would work but I wanted to be sure to avoid production crashes.
Thanks
Upvotes: 2
Views: 741
Reputation: 70097
the current version of pip (2020-10-13) does not have a dependency resolver, it picks the first constraint greedily (so if urllib3
is encountered unbounded first, it will pick the latest version -- even if a later package has a more restrictive requirement)
this is being changed in pip, you can enable the resolver as an opt-in in pip>=20.2 and it will become the default in the future (later this year)
Upvotes: 3