Search code examples
pythondjangopippipenvpipenv-install

There are incompatible versions in the resolved dependencies


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.


Solution

  • 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'