I have a GAE standard Python 3 app. When I deploy with
gcloud app deploy app.yaml --project XXX
and this for my requirements.txt:
Werkzeug==1.0.1
Flask==1.1.2
Flask-Login==0.5.0
Flask-WTF==0.14.3
google-cloud-ndb==1.10.5
google-cloud-tasks==2.6.0
firebase-admin==5.0.3
I now get this error:
Updating service [default]...
WARNING: Found incompatible dependencies:
google-cloud-datastore 1.15.3 has requirement google-api-core[grpc]<2.0.0dev,>=1.14.0, but you have google-api-core 2.1.1.
google-cloud-core 1.7.2 has requirement google-api-core<2.0.0dev,>=1.21.0, but you have google-api-core 2.1.1.
google-cloud-core 1.7.2 has requirement google-auth<2.0dev,>=1.24.0, but you have google-auth 2.3.0.
Although my app appears to be working, I'd like to get rid of these errors just in case.
I don't get these errors on my Mac, and nothing requires google-api-core 2.1.1.
The output of pipdeptree | fgrep api-core is:
- google-api-core [required: >=1.22.1,<3.0.0dev, installed: 1.31.3]
- google-api-core [required: >=1.21.0,<3.0.0dev, installed: 1.31.3]
- google-api-core [required: >=1.26.0,<3.0.0dev, installed: 1.31.3]
- google-api-core [required: >=1.21.0,<2.0.0dev, installed: 1.31.3]
- google-api-core [required: >=1.29.0,<3.0dev, installed: 1.31.3]
- google-api-core [required: >=1.21.0,<2.0.0dev, installed: 1.31.3]
- google-api-core [required: >=1.14.0,<2.0.0dev, installed: 1.31.3]
- google-api-core [required: >=1.21.0,<2.0.0dev, installed: 1.31.3]
- google-api-core [required: >=1.26.0,<3.0.0dev, installed: 1.31.3]
My requirements.txt is shown below.
Is there a combination of versions of google-cloud-ndb, google-cloud-tasks, and firebase-admin that work together?
When version numbers are not explicitly set in requirements.txt, the system will install the most recent version. And sometimes, the most recent version of one package is not compatible to another package.
In your project, google-api-core 2.1.1 is automatically installed but your version of google-cloud-datastore needs something lower than 2.0.0 but a minimum of 1.14.0. The same logic goes with the warnings related to google-cloud-core 1.7.2.
To fix this, you should explicitly set the version numbers for the mentioned packages using the version range provided in the warning message. You'll have to pick something that works for you. For example, you can have google-api-core 1.14.0 in your requirements.txt file but this assumes that there is nothing in your code that needs a feature that is in a higher release.
Fixing the versions of google-api-core and google-auth gets rid of the version incompatibilities. It looks like there are a lot of changes with version 2 of these libraries (which are new as of a few months ago), and that firebase hasn't caught up yet so I fixed the most recent 1.* version.
Here is a working requirements.txt using latest libraries:
Werkzeug==1.0.1
Flask==1.1.2
Flask-Login==0.5.0
Flask-WTF==0.14.3
google-api-core==1.31.5 # Avoid conflicts
google-auth==1.35.0 # Avoid conflicts
google-cloud-ndb==1.11.1
google-cloud-tasks==2.7.1
firebase-admin==5.2.0
I wish pip could figure this stuff out...
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.
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'
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.
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)
I am trying to install Metview package through its installation page:
https://anaconda.org/conda-forge/metview
using the code: conda install -c conda-forge metview
I encounter this problem:
(base) C:\Users\Saeed>conda install -c conda-forge metview
Collecting package metadata (current_repodata.json): done
Solving environment: failed with initial frozen solve. Retrying with flexible solve.
Collecting package metadata (repodata.json): done
Solving environment: failed with initial frozen solve. Retrying with flexible solve.
PackagesNotFoundError: The following packages are not available from current channels:
- metview
Current channels:
- https://conda.anaconda.org/conda-forge/win-64
- https://conda.anaconda.org/conda-forge/noarch
- https://repo.anaconda.com/pkgs/main/win-64
- https://repo.anaconda.com/pkgs/main/noarch
- https://repo.anaconda.com/pkgs/r/win-64
- https://repo.anaconda.com/pkgs/r/noarch
- https://repo.anaconda.com/pkgs/msys2/win-64
- https://repo.anaconda.com/pkgs/msys2/noarch
- https://conda.anaconda.org/conda-canary/win-64
- https://conda.anaconda.org/conda-canary/noarch
To search for alternate channels that may provide the conda package you're
looking for, navigate to
https://anaconda.org
and use the search bar at the top of the page.
I am using Anaconda and tried to use the Anaconda prompt.
Thank you in advance for your help.
The metview package at conda-forge is only built for osx-64 and linux-64. Looks like you're on win-64 system. Try installing with pip install metview. If unsuccessful you'll have to build from source.
I just did and got this:
(base) C:\Users\Saeed>pip install metview
Collecting metview
Using cached metview-1.4.2-py2.py3-none-any.whl (19 kB)
Requirement already satisfied: pandas in c:\programdata\anaconda3\lib\site-packages (from metview) (1.0.3)
Requirement already satisfied: cffi in c:\programdata\anaconda3\lib\site-packages (from metview) (1.14.0)
Requirement already satisfied: numpy in c:\programdata\anaconda3\lib\site-packages (from metview) (1.18.1)
Requirement already satisfied: pytz>=2017.2 in c:\programdata\anaconda3\lib\site-packages (from pandas->metview) (2020.1)
Requirement already satisfied: python-dateutil>=2.6.1 in c:\programdata\anaconda3\lib\site-packages (from pandas->metview) (2.8.1)
Requirement already satisfied: pycparser in c:\programdata\anaconda3\lib\site-packages (from cffi->metview) (2.20)
Requirement already satisfied: six>=1.5 in c:\programdata\anaconda3\lib\site-packages (from python-dateutil>=2.6.1->pandas->metview) (1.14.0)
Installing collected packages: metview
Successfully installed metview-1.4.2
The thing is it is not the right and appropriate package! it is installing a wrong version, or at least sth not right!
I ran this in jupyter and got this:
import metview as mv
--------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-1-6bf5b378b3e8> in <module>
----> 1 import metview as mv
C:\ProgramData\Anaconda3\lib\site-packages\metview\__init__.py in <module>
24 if len(sys.argv) != 2 or sys.argv[0] != "-m" or sys.argv[1] != "selfcheck":
25
---> 26 from . import bindings as _bindings
27
28 _bindings.bind_functions(globals(), module_name=__name__)
C:\ProgramData\Anaconda3\lib\site-packages\metview\bindings.py in <module>
168
169
--> 170 mi = MetviewInvoker()
171
172 try:
C:\ProgramData\Anaconda3\lib\site-packages\metview\bindings.py in __init__(self)
64 pid = os.getpid()
65 # print('PYTHON:', pid, ' ', env_file.name, ' ', repr(signal.SIGUSR1))
---> 66 signal.signal(signal.SIGUSR1, self.signal_from_metview)
67 # p = subprocess.Popen(['metview', '-edbg', 'tv8 -a', '-slog', '-python-serve',
68 # env_file.name, str(pid)], stdout=subprocess.PIPE)
AttributeError: module 'signal' has no attribute 'SIGUSR1'