【问题标题】:flask app engine does not work with firestore?烧瓶应用程序引擎不适用于firestore?
【发布时间】:2018-03-17 23:07:45
【问题描述】:

设置:在 Google Cloud Shell 标准环境中运行

我尝试使用 from google.cloud import firestore 从烧瓶应用程序访问 Firestore

我使用pip install --upgrade google-cloud-firestore -t lib 安装了它。如果我手动运行脚本,它工作正常。但是当使用dev_appserver.py 时,它会失败。得到以下错误。

$ dev_appserver.py app.yaml
INFO     2017-10-06 07:34:35,301 devappserver2.py:105] Skipping SDK update check.
INFO     2017-10-06 07:34:35,391 api_server.py:300] Starting API server at: http://0.0.0.0:34796
WARNING  2017-10-06 07:34:35,391 dispatcher.py:312] Your python27 micro version is below 2.7.12, our current production version.
INFO     2017-10-06 07:34:35,440 dispatcher.py:251] Starting module "default" running at: http://0.0.0.0:8080
INFO     2017-10-06 07:34:35,441 admin_server.py:116] Starting admin server at: http://0.0.0.0:8000

ERROR    2017-10-06 07:34:42,266 wsgi.py:263]
Traceback (most recent call last):
  File "/google/google-cloud-sdk/platform/google_appengine/google/appengine/runtime/wsgi.py", line 240, in Handle
    handler = _config_handle.add_wsgi_middleware(self._LoadHandler())
  File "/google/google-cloud-sdk/platform/google_appengine/google/appengine/runtime/wsgi.py", line 299, in _LoadHandler
    handler, path, err = LoadObject(self._handler)
  File "/google/google-cloud-sdk/platform/google_appengine/google/appengine/runtime/wsgi.py", line 85, in LoadObject
    obj = __import__(path[0])
  File "/home/user1/projects/probfe/main.py", line 10, in <module>
    from google.cloud import firestore
  File "/google/google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/python/runtime/sandbox.py", line 1132, in load_module
    raise ImportError('No module named %s' % fullname)
ImportError: No module named google.gax

但是,在我的lib 中,我可以看到它们。

$ls lib
builtins                       future-0.16.0.dist-info                         itsdangerous.pyc                requests-2.18.4.dist-info
cachetools                     futures-3.1.1.dist-info                         jinja2                          rsa
cachetools-2.0.1.dist-info     google                                          Jinja2-2.9.6.dist-info          rsa-3.4.2.dist-info
certifi                        googleapis_common_protos-1.5.3.dist-info        libfuturize                     setuptools
certifi-2017.7.27.1.dist-info  googleapis_common_protos-1.5.3-py2.7-nspkg.pth  libpasteurize                   setuptools-36.5.0.dist-info
chardet                        google_auth-1.1.1.dist-info                     _markupbase                     six-1.11.0.dist-info
chardet-3.0.4.dist-info        google_auth-1.1.1-py2.7-nspkg.pth               markupsafe                      six.py
click                          google_cloud_core-0.27.1.dist-info              MarkupSafe-1.0.dist-info        six.pyc
click-6.7.dist-info            google_cloud_core-0.27.1-py3.6-nspkg.pth        past                            socketserver
concurrent                     google_cloud_firestore-0.27.0.dist-info         pkg_resources                   tests
copyreg                        google_cloud_firestore-0.27.0-py3.6-nspkg.pth   ply                             _thread
dill                           google_gax-0.15.15.dist-info                    ply-3.8.dist-info               tkinter
dill-0.2.7.1.dist-info         google_gax-0.15.15-py2.7-nspkg.pth              protobuf-3.4.0.dist-info        urllib3
_dummy_thread                  grpc                                            protobuf-3.4.0-py2.7-nspkg.pth  urllib3-1.22.dist-info
easy_install.py                grpcio-1.4.0.dist-info                          pyasn1                          werkzeug
easy_install.pyc               html                                            pyasn1-0.3.7.dist-info          Werkzeug-0.12.2.dist-info
enum                           http                                            pyasn1_modules                  winreg
enum34-1.1.6.dist-info         idna                                            pyasn1_modules-0.1.4.dist-info  xmlrpc
flask                          idna-2.6.dist-info                              queue
Flask-0.12.2.dist-info         itsdangerous-0.24.dist-info                     reprlib
future                         itsdangerous.py                                 requests

【问题讨论】:

    标签: google-app-engine flask google-app-engine-python google-cloud-firestore


    【解决方案1】:

    由于您使用的是dev_appserver.py,这意味着您有一个标准的环境应用程序。在标准环境中,所有外部依赖项都需要安装在您的应用中,而不是安装在本地 python 安装中(这是您对 pip 调用所做的)。

    来自Installing a third-party library

    1. 创建一个目录来存储您的第三方库,例如lib/

      mkdir lib
      
    2. 使用带有-t &lt;directory&gt; 标志的pip(版本6 或更高版本)将库复制到您在之前创建的文件夹中 步。例如:

      pip install -t lib/ <library_name>
      

    【讨论】:

    • 我已经这样做并得到了错误。在我的 requirements.txt 中,它包括 Flask==0.12.2google-cloud-firestore 。我忘了在我的原始帖子中添加它。我刚刚在原始帖子中编辑了它。
    • 你没有提到你如何使用requirements.txt - 它不会在标准环境中自动使用......
    • 这是我所做的:pip install --upgrade -r requirements.txt -t lib。然后我跑了:dev_appserver.py app.yaml。我错过了什么吗?我只是使用this flask app engine guide 并在requirements.txt 中添加google-cloud-firestore
    • 好的,至少现在它抱怨google.gax,而不是google.cloud.firestore - 所以原来的问题是固定的。检查您的lib 目录中是否确实缺少它。如果是尝试将google-gax 明确添加到您的requirements.txt,然后重试。
    • google-gax 在我的lib 中。我在原帖中附上了我的lib。我还尝试将google-gax 明确添加到requirements.txt。我得到了同样的错误。我在 Google Cloud Shell 中运行所有内容(如果有影响的话)
    猜你喜欢
    • 2018-11-03
    • 1970-01-01
    • 2021-12-10
    • 2020-08-30
    • 1970-01-01
    • 1970-01-01
    • 2014-05-08
    • 2018-03-15
    • 1970-01-01
    相关资源
    最近更新 更多