ImportError:无法导入名称cygrpc

问题描述:

我正在尝试在Google App Engine-Standard上使用Firebase本机模式.我的python语言是Python 2.7.当我尝试从google.cloud导入firestore时,出现错误ImportError:无法导入名称cygrpc

I am trying to use Firebase Native mode on Google App Engine - Standard. My python language is Python 2.7. When I try to from google.cloud import firestore, I get an error ImportError: cannot import name cygrpc

我已经部署了文档此处中所述的virtualenv.

I have deployed virtualenv described in the documentation here.

pip install virtualenv
virtualenv env
source env/bin/activate

我的appengine_config.py是

My appengine_config.py is

from google.appengine.ext import vendor
import os.path

# Add any libraries installed in the "lib" folder.
vendor.add('lib')
vendor.add(os.path.join(os.path.dirname(os.path.realpath(__file__)), 'lib'))

my_app.py包含

my_app.py includes

from google.appengine.ext.webapp import template
from google.appengine.ext import ndb
from google.appengine.api import mail

import os

from google.cloud import firestore



(/base/alloc/tmpfs/dynamic_runtimes/python27g/43d5822312de17fd/python27/python27_lib/versions/1/google/appengine/runtime/wsgi.py:269)
Traceback (most recent call last):
  File "/base/alloc/tmpfs/dynamic_runtimes/python27g/43d5822312de17fd/python27/python27_lib/versions/1/google/appengine/runtime/wsgi.py", line 240, in Handle
    handler = _config_handle.add_wsgi_middleware(self._LoadHandler())
  File "/base/alloc/tmpfs/dynamic_runtimes/python27g/43d5822312de17fd/python27/python27_lib/versions/1/google/appengine/runtime/wsgi.py", line 311, in _LoadHandler
    handler, path, err = LoadObject(self._handler)
  File "/base/alloc/tmpfs/dynamic_runtimes/python27g/43d5822312de17fd/python27/python27_lib/versions/1/google/appengine/runtime/wsgi.py", line 85, in LoadObject
    obj = __import__(path[0])
  File "/base/data/home/apps/s~openbarn-prod/20190602t102855.418624175446659791/main.py", line 4, in <module>
    from controllers import server, common, header
  File "/base/data/home/apps/s~openbarn-prod/20190602t102855.418624175446659791/controllers/server.py", line 10, in <module>
    from google.cloud import firestore
  File "/base/data/home/apps/s~openbarn-prod/20190602t102855.418624175446659791/lib/google/cloud/firestore.py", line 18, in <module>
    from google.cloud.firestore_v1 import __version__
  File "/base/data/home/apps/s~openbarn-prod/20190602t102855.418624175446659791/lib/google/cloud/firestore_v1/__init__.py", line 22, in <module>
    from google.cloud.firestore_v1._helpers import GeoPoint
  File "/base/data/home/apps/s~openbarn-prod/20190602t102855.418624175446659791/lib/google/cloud/firestore_v1/_helpers.py", line 21, in <module>
    import grpc
  File "/base/data/home/apps/s~openbarn-prod/20190602t102855.418624175446659791/lib/grpc/__init__.py", line 23, in <module>
    from grpc._cython import cygrpc as _cygrpc
ImportError: cannot import name cygrpc

我有一个问题-您可以使用Python 2.7在Google App Engine标准上使用Firestore本机模式吗?我需要GAE-Standard,因为我们正在使用GAE-Flex不支持的Google端点.

The question I have - can you use Firestore Native mode on Google App Engine Standard using Python 2.7? I need GAE- Standard because we are using Google Endpoint that is not support on GAE-Flex.

文档此处表示App Engine客户端库集成不是在Python2.7 GAE Standard环境上受支持.但是我没有尝试使用App Engine客户端库,而是尝试在GAE标准环境中使用App Engine服务器库.如何解决cygrpc的导入错误?解决方案此处,说-

The doc here says App Engine Client library integration is not supported on Python2.7 GAE Standard environment. But I am not trying App Engine Client library, I am trying App Engine Server library in GAE Standard Environment. How do I solve for import error for cygrpc? The solution here, says -

python -m pip install grpcio --ignore-installed

这是推荐的吗?

前一段时间,GAE标准不支持GRPC,请参见 issue 149 ="https://github.com/googleapis/gax-python/issues/149"上没有看到更新的活动.一个>.

A while ago GRPC wasn't supported on GAE standard, see GRPC and types import error in App Engine Datastore. I didn't try since, but I don't see newer activity on issue 149.

此外,回溯中的 cython 参考表明它可能包含编译后的代码,这会违反

Also the cython reference in the traceback suggests that it may include compiled code, which would violate the pure python standard environment sandbox restrictions that applies to the code you deploy.