Skip to content

Resolution issue when installing a list of wheels #9168

@sbidoul

Description

@sbidoul

Hi folks, a colleague of mine reported a weird issue with the new resolver.

I could confirm it with pip master, today. Python 3.8 on Linux.

Using the following requirements.txt:

asgiref==3.3.1
cffi==1.14.4
cryptography==3.2.1
Django==3.1.3
djangorestframework==3.12.2
drf-jwt==1.17.2
pycparser==2.20
PyJWT==1.7.1
pytz==2020.4
six==1.15.0
sqlparse==0.4.1

pip install -r requirements.txt works fine.

However when building wheels then installing all wheels from the wheelhouse, this fails:

$ pip wheel -r requirements.txt --wheel-dir=wheelhouse
$ pip install wheelhouse/*.whl
Processing ./release/asgiref-3.3.1-py3-none-any.whl
Processing ./release/cffi-1.14.4-cp38-cp38-manylinux1_x86_64.whl
Processing ./release/cryptography-3.2.1-cp35-abi3-manylinux2010_x86_64.whl
Processing ./release/djangorestframework-3.12.2-py3-none-any.whl
Processing ./release/Django-3.1.3-py3-none-any.whl
Processing ./release/drf_jwt-1.17.2-py2.py3-none-any.whl
Processing ./release/pycparser-2.20-py2.py3-none-any.whl
Processing ./release/PyJWT-1.7.1-py2.py3-none-any.whl
Processing ./release/pytz-2020.4-py2.py3-none-any.whl
Processing ./release/six-1.15.0-py2.py3-none-any.whl
Processing ./release/sqlparse-0.4.1-py3-none-any.whl
Collecting PyJWT[crypto]<2.0.0,>=1.5.2
  Using cached PyJWT-1.7.1-py2.py3-none-any.whl (18 kB)
  Using cached PyJWT-1.7.0-py2.py3-none-any.whl (18 kB)
  Using cached PyJWT-1.6.4-py2.py3-none-any.whl (19 kB)
  Using cached PyJWT-1.6.3-py2.py3-none-any.whl (19 kB)
  Using cached PyJWT-1.6.1-py2.py3-none-any.whl (18 kB)
  Using cached PyJWT-1.6.0-py2.py3-none-any.whl (18 kB)
  Using cached PyJWT-1.5.3-py2.py3-none-any.whl (17 kB)
  Using cached PyJWT-1.5.2-py2.py3-none-any.whl (17 kB)
INFO: pip is looking at multiple versions of <Python from Requires-Python> to determine which version is compatible with other requirements. This could take a while.
INFO: pip is looking at multiple versions of sqlparse to determine which version is compatible with other requirements. This could take a while.
INFO: pip is looking at multiple versions of six to determine which version is compatible with other requirements. This could take a while.
INFO: pip is looking at multiple versions of pytz to determine which version is compatible with other requirements. This could take a while.
INFO: pip is looking at multiple versions of pyjwt to determine which version is compatible with other requirements. This could take a while.
INFO: pip is looking at multiple versions of pycparser to determine which version is compatible with other requirements. This could take a while.
INFO: pip is looking at multiple versions of drf-jwt to determine which version is compatible with other requirements. This could take a while.
INFO: pip is looking at multiple versions of djangorestframework to determine which version is compatible with other requirements. This could take a while.
INFO: pip is looking at multiple versions of django to determine which version is compatible with other requirements. This could take a while.
INFO: pip is looking at multiple versions of cryptography to determine which version is compatible with other requirements. This could take a while.
INFO: pip is looking at multiple versions of cffi to determine which version is compatible with other requirements. This could take a while.
INFO: pip is looking at multiple versions of asgiref to determine which version is compatible with other requirements. This could take a while.
ERROR: Cannot install pyjwt 1.7.1 (from /home/sbi-local/ACSONE/OpenErp/django-lns/release/PyJWT-1.7.1-py2.py3-none-any.whl), pyjwt[crypto]==1.5.2, pyjwt[crypto]==1.5.3, pyjwt[crypto]==1.6.0, pyjwt[crypto]==1.6.1, pyjwt[crypto]==1.6.3, pyjwt[crypto]==1.6.4, pyjwt[crypto]==1.7.0 and pyjwt[crypto]==1.7.1 because these package versions have conflicting dependencies.

The conflict is caused by:
    The user requested pyjwt 1.7.1 (from /home/sbi-local/ACSONE/OpenErp/django-lns/release/PyJWT-1.7.1-py2.py3-none-any.whl)
    pyjwt[crypto] 1.7.1 depends on pyjwt 1.7.1 (from https://files.pythonhosted.org/packages/87/8b/6a9f14b5f781697e51259d81657e6048fd31a113229cf346880bb7545565/PyJWT-1.7.1-py2.py3-none-any.whl#sha256=5c6eca3c2940464d106b99ba83b00c6add741c9becaec087fb7ccdefea71350e (from https://pypi.org/simple/pyjwt/))
    The user requested pyjwt 1.7.1 (from /home/sbi-local/ACSONE/OpenErp/django-lns/release/PyJWT-1.7.1-py2.py3-none-any.whl)
    pyjwt[crypto] 1.7.0 depends on pyjwt 1.7.0 (from https://files.pythonhosted.org/packages/02/9b/16c92330f1fb76e3f6372ba6f804d412ec894ee1d9ea31516269b5f6add4/PyJWT-1.7.0-py2.py3-none-any.whl#sha256=00414bfef802aaecd8cc0d5258b6cb87bd8f553c2986c2c5f29b19dd5633aeb7 (from https://pypi.org/simple/pyjwt/))
    The user requested pyjwt 1.7.1 (from /home/sbi-local/ACSONE/OpenErp/django-lns/release/PyJWT-1.7.1-py2.py3-none-any.whl)
    pyjwt[crypto] 1.6.4 depends on pyjwt 1.6.4 (from https://files.pythonhosted.org/packages/93/d1/3378cc8184a6524dc92993090ee8b4c03847c567e298305d6cf86987e005/PyJWT-1.6.4-py2.py3-none-any.whl#sha256=30b1380ff43b55441283cc2b2676b755cca45693ae3097325dea01f3d110628c (from https://pypi.org/simple/pyjwt/))
    The user requested pyjwt 1.7.1 (from /home/sbi-local/ACSONE/OpenErp/django-lns/release/PyJWT-1.7.1-py2.py3-none-any.whl)
    pyjwt[crypto] 1.6.3 depends on pyjwt 1.6.3 (from https://files.pythonhosted.org/packages/77/11/4ccc1f4f8d812a6459e53f4f33107ae5d25babed9e6c1f0c6923b1fa8966/PyJWT-1.6.3-py2.py3-none-any.whl#sha256=d527c3330d83d7278a0a8ef570b7c9c39fbf2c0c1edbe564a1a8a02d5352322b (from https://pypi.org/simple/pyjwt/))
    The user requested pyjwt 1.7.1 (from /home/sbi-local/ACSONE/OpenErp/django-lns/release/PyJWT-1.7.1-py2.py3-none-any.whl)
    pyjwt[crypto] 1.6.1 depends on pyjwt 1.6.1 (from https://files.pythonhosted.org/packages/31/8f/19c302aa9a391dd1fbd249362b749021b88d40fb59af0363939a2250afed/PyJWT-1.6.1-py2.py3-none-any.whl#sha256=bca523ef95586d3a8a5be2da766fe6f82754acba27689c984e28e77a12174593 (from https://pypi.org/simple/pyjwt/))
    The user requested pyjwt 1.7.1 (from /home/sbi-local/ACSONE/OpenErp/django-lns/release/PyJWT-1.7.1-py2.py3-none-any.whl)
    pyjwt[crypto] 1.6.0 depends on pyjwt 1.6.0 (from https://files.pythonhosted.org/packages/fc/fd/02c195aa48beef5e4b018259634dd885fa1a9df351c708a8486e7ddf2216/PyJWT-1.6.0-py2.py3-none-any.whl#sha256=b752500cafd4df9f0dc6efe9063603e36a4e1a5c24fee48234d2949b6606aa59 (from https://pypi.org/simple/pyjwt/))
    The user requested pyjwt 1.7.1 (from /home/sbi-local/ACSONE/OpenErp/django-lns/release/PyJWT-1.7.1-py2.py3-none-any.whl)
    pyjwt[crypto] 1.5.3 depends on pyjwt 1.5.3 (from https://files.pythonhosted.org/packages/8a/a6/4d931a2c77a224d27c78382f4ce8ec07542d4426ea2793bea77a689273c2/PyJWT-1.5.3-py2.py3-none-any.whl#sha256=a4e5f1441e3ca7b382fd0c0b416777ced1f97c64ef0c33bfa39daf38505cfd2f (from https://pypi.org/simple/pyjwt/))
    The user requested pyjwt 1.7.1 (from /home/sbi-local/ACSONE/OpenErp/django-lns/release/PyJWT-1.7.1-py2.py3-none-any.whl)
    pyjwt[crypto] 1.5.2 depends on pyjwt 1.5.2 (from https://files.pythonhosted.org/packages/46/63/9e57342802642c447f0620dea41a18033abbb466af9417543295ab56b8b9/PyJWT-1.5.2-py2.py3-none-any.whl#sha256=9e7d780c30cd03bb0d29510b03e09caa95c6d880b3897450eb0f2d1678d3e5b1 (from https://pypi.org/simple/pyjwt/))

To fix this you could try to:
1. loosen the range of package versions you've specified
2. remove package versions to allow pip attempt to solve the dependency conflict

ERROR: ResolutionImpossible: for help visit https://pip.pypa.io/en/latest/user_guide/#fixing-conflicting-dependencies

There are plenty of workarounds (in this case we should use --no-deps of course), but I thought it might be interesting nevertheless as it might reveal something more significant.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions