There are incompatible versions in the resolved dependencies

13.8k views Asked by At

I’m trying to just run my python project that seems to work fine on my Mac (best in pycharm, not as good but can run in VSCode) and terrible on my raspberry pi in VSCode. Whenever I run a pipenv shell and then a pipenv install it just complains with this error:

Pipfile.lock (e9a11d) out of date, updating to (47943b)...
Locking [dev-packages] dependencies...
Locking [packages] dependencies...
Building requirements...
Resolving dependencies...
✘ Locking Failed! 
[ResolutionFailure]:   File "/home/nick/.local/lib/python3.7/site-packages/pipenv/resolver.py", line 741, in _main
[ResolutionFailure]:       resolve_packages(pre, clear, verbose, system, write, requirements_dir, packages, dev)
[ResolutionFailure]:   File "/home/nick/.local/lib/python3.7/site-packages/pipenv/resolver.py", line 709, in resolve_packages
[ResolutionFailure]:       requirements_dir=requirements_dir,
[ResolutionFailure]:   File "/home/nick/.local/lib/python3.7/site-packages/pipenv/resolver.py", line 692, in resolve
[ResolutionFailure]:       req_dir=requirements_dir
[ResolutionFailure]:   File "/home/nick/.local/lib/python3.7/site-packages/pipenv/utils.py", line 1403, in resolve_deps
[ResolutionFailure]:       req_dir=req_dir,
[ResolutionFailure]:   File "/home/nick/.local/lib/python3.7/site-packages/pipenv/utils.py", line 1108, in actually_resolve_deps
[ResolutionFailure]:       resolver.resolve()
[ResolutionFailure]:   File "/home/nick/.local/lib/python3.7/site-packages/pipenv/utils.py", line 833, in resolve
[ResolutionFailure]:       raise ResolutionFailure(message=str(e))
[pipenv.exceptions.ResolutionFailure]: Warning: Your dependencies could not be resolved. You likely have a mismatch in your sub-dependencies.
  First try clearing your dependency cache with $ pipenv lock --clear, then try the original command again.
 Alternatively, you can use $ pipenv install --skip-lock to bypass this mechanism, then run $ pipenv graph to inspect the situation.
  Hint: try $ pipenv lock --pre if it is a pre-release dependency.
ERROR: Could not find a version that matches graphene-django>=3.0.0b1 (from -r /tmp/pipenvcczdc6ayrequirements/pipenv-eg1jqra7-constraints.txt (line 3))
Tried: 1.0, 1.1.0, 1.2.0, 1.2.1, 1.3, 2.0.0, 2.0.0, 2.1.0, 2.1.0, 2.2.0, 2.2.0, 2.3.0, 2.3.0, 2.3.2, 2.3.2, 2.4.0, 2.4.0, 2.5.0, 2.5.0, 2.6.0, 2.6.0, 2.7.0, 2.7.0, 2.7.1, 2.7.1, 2.8.0, 2.8.0, 2.8.1, 2.8.1, 2.8.2, 2.8.2, 2.9.0, 2.9.0, 2.9.1, 2.9.1, 2.10.0, 2.10.0, 2.10.1, 2.10.1, 2.11.0, 2.11.0, 2.11.1, 2.11.1, 2.12.0, 2.12.0, 2.12.1, 2.12.1, 2.13.0, 2.13.0, 2.14.0, 2.14.0, 2.15.0, 2.15.0
Skipped pre-versions: 1.0.dev20160909000001, 1.0.dev20160910000001, 1.0.dev20160917000001, 1.0.dev20160919000001, 1.0.dev20160919000002, 1.0.dev20160919000003, 1.0.dev20160919000004, 1.0.dev20160920000001, 1.0.dev20160922000001, 2.0.dev2017072501, 2.0.dev2017072601, 2.0.dev2017073101, 2.0.dev2017073101, 2.0.dev2017083101, 2.0.dev2017083101, 2.1rc0, 2.1rc0, 2.1rc1, 2.1rc1, 3.0.0b1, 3.0.0b1, 3.0.0b2, 3.0.0b2, 3.0.0b3, 3.0.0b3, 3.0.0b4, 3.0.0b4, 3.0.0b5, 3.0.0b5, 3.0.0b6, 3.0.0b6, 3.0.0b7, 3.0.0b7
There are incompatible versions in the resolved dependencies:
  graphene-django (from -r /tmp/pipenvcczdc6ayrequirements/pipenv-eg1jqra7-constraints.txt (line 3))
  graphene-django>=3.0.0b1 (from django-graphql-jwt==0.3.2->-r /tmp/pipenvcczdc6ayrequirements/pipenv-eg1jqra7-constraints.txt (line 5))

I don’t see what’s incompatible after running a pipenv graph (after pipenv install --skip-lock) as it returns this:

django-cors-headers==3.7.0
  - Django [required: >=2.2, installed: 3.2.3]
    - asgiref [required: >=3.3.2,<4, installed: 3.3.4]
      - typing-extensions [required: Any, installed: 3.10.0.0]
    - pytz [required: Any, installed: 2021.1]
    - sqlparse [required: >=0.2.2, installed: 0.4.1]
django-graphql-jwt==0.3.2
  - Django [required: >=1.11, installed: 3.2.3]
    - asgiref [required: >=3.3.2,<4, installed: 3.3.4]
      - typing-extensions [required: Any, installed: 3.10.0.0]
    - pytz [required: Any, installed: 2021.1]
    - sqlparse [required: >=0.2.2, installed: 0.4.1]
  - graphene-django [required: >=3.0.0b1, installed: 3.0.0b7]
    - Django [required: >=2.2, installed: 3.2.3]
      - asgiref [required: >=3.3.2,<4, installed: 3.3.4]
        - typing-extensions [required: Any, installed: 3.10.0.0]
      - pytz [required: Any, installed: 2021.1]
      - sqlparse [required: >=0.2.2, installed: 0.4.1]
    - graphene [required: >=3.0.0b5,<4, installed: 3.0b7]
      - aniso8601 [required: >=8,<9, installed: 8.1.1]
      - graphql-core [required: >=3.1.2,<4, installed: 3.1.5]
      - graphql-relay [required: >=3.0,<4, installed: 3.1.0]
        - graphql-core [required: >=3.1, installed: 3.1.5]
        - typing-extensions [required: >=3.7,<4, installed: 3.10.0.0]
    - graphql-core [required: >=3.1.0,<4, installed: 3.1.5]
    - promise [required: >=2.1, installed: 2.3]
      - six [required: Any, installed: 1.16.0]
    - text-unidecode [required: Any, installed: 1.3]
  - PyJWT [required: >=2,<3, installed: 2.1.0]
Rx==1.6.1
singledispatch==3.6.1
  - six [required: Any, installed: 1.16.0]

It seems that every version is installed correctly version-wide, including the graphene-django that it complains about [required: >=3.0.0b1, installed: 3.0.0b7].

Why is this error happening?

pip3 list returns:

Package             Version
------------------- --------
aniso8601           8.1.1
asgiref             3.3.4
Django              3.2.3
django-cors-headers 3.7.0
django-graphql-jwt  0.3.2
graphene            3.0b7
graphene-django     3.0.0b7
graphql-core        3.1.5
graphql-relay       3.1.0
pip                 21.1.1
promise             2.3
PyJWT               2.1.0
pytz                2021.1
Rx                  1.6.1
setuptools          56.0.0
singledispatch      3.6.1
six                 1.16.0
sqlparse            0.4.1
text-unidecode      1.3
typing-extensions   3.10.0.0
wheel               0.36.2

The Pipfile:

[[source]]
url = "https://pypi.org/simple"
verify_ssl = true
name = "pypi"

[packages]
django = "*"
django-graphql-jwt = "*"
pyjwt = "1.7.1"
django-cors-headers = "*"
graphene-django = "*"

[requires]
python_version = "3.7"

[dev-packages]

I’ve tried a ton of things to try to fix this any have no idea where to go from here. I wanted to deploy this python, graphql and react project on my raspberry pi, but I assume I can’t if I can’t even get it to run. I'm trying to run this on my raspberry pi (running raspbian), and it is the back-end python app where the issue lies.

Any help, anything would be very much appreciated. I’m a beginner with python.

3

There are 3 answers

1
AudioBubble On BEST ANSWER

You somehow managed to install beta versions (used the --pre flag before then deleted the option from Pipfile, for example or used pip directly in the virtual env).

Now, because django-graphql-jwt doesn't conform to semantic versioning, they decided to depend on a major version, pre-release in a patch release ¯\_(ツ)_/¯ .

Since the 0.3.1 version of django-graphql-jtw depends on >=2.5.1, your beta version will still match, but without the --pre flag locking will fail, because the highest non-beta version is 2.5.1. That is the conflict being shown (but the output isn't very clear).

The resolution that should solve the issue is:

pipenv uninstall django-graphql-jwt django-graphene graphene graphql
# followed by:
pipenv install 'django-graphql-jwt<0.3.2'
1
Jose Romero On

The problem seems to be that graphene-django only has version 2.15.0 according to PyPI https://pypi.org/project/graphene-django/. But for some reason in this commit of the library django-graphql-jwt it asks for a version 3.0.0b1. Which I think is the issue that shows in your log:

ERROR: Could not find a version that matches graphene-django>=3.0.0b1 (from -r /tmp/pipenvcczdc6ayrequirements/pipenv-eg1jqra7-constraints.txt (line 3))

Apparently in this commit the latest graphene-django version was still supported. So my guess is that maybe downgrading to:

django-graphql-jwt="0.3.1"

instead of 0.3.2 should solve the problem. And it this case you can report them the issue.

6
Alexander Volkovsky On

Actually Pipenv doesn't have a smart enough dependency resolver. I ran into the similar issue and switched to poetry. Poetry will resolve your dependencies to the latest versions that match the constraints and don't conflict with each other. Poetry is also much faster than Pipenv and provides a better user experience.

# pyproject.toml

[build-system]
requires = ["poetry>=1.12"]
build-backend = "poetry.masonry.api"

[tool.poetry]
name = "sample"
version = "0.1.0"
description = "Sample"
authors = []

[tool.poetry.dependencies]
python = "~3.7"

django = "*"
django-graphql-jwt = "*"
pyjwt = "1.7.1"
django-cors-headers = "*"
graphene-django = "*"

In shell:

$ poetry --version
Poetry version 1.1.6

$ poetry lock
Updating dependencies
Resolving dependencies... (15.3s)

Writing lock file

$ poetry install
Installing dependencies from lock file

Package operations: 17 installs, 0 updates, 0 removals

  • Installing six (1.16.0)
  • Installing promise (2.3)
  • Installing rx (1.6.1)
  • Installing graphql-core (2.3.2)
  • Installing typing-extensions (3.10.0.0)
  • Installing aniso8601 (7.0.0)
  • Installing asgiref (3.3.4)
  • Installing graphql-relay (2.0.1)
  • Installing pytz (2021.1)
  • Installing django (3.2.3)
  • Installing graphene (2.1.8)
  • Installing singledispatch (3.6.2)
  • Installing text-unidecode (1.3)
  • Installing graphene-django (2.15.0)
  • Installing pyjwt (1.7.1)
  • Installing django-cors-headers (3.7.0)
  • Installing django-graphql-jwt (0.3.1)