Google Cloud Platform:ImportError:部署时没有名为"google.api.core"的模块

Jul*_*med 8 google-cloud-platform

这是我尝试部署时收到的错误gcloud app deploy.我以前成功部署了相同的应用程序.我能够在本地计算机上运行该应用程序,但在部署时收到错误

追溯:

Updating service [default]...failed.                                           
ERROR: (gcloud.app.deploy) Error Response: [9] 
Application startup error:
[2017-08-25 10:50:23 +0000] [1] [INFO] Starting gunicorn 19.7.1
[2017-08-25 10:50:23 +0000] [1] [INFO] Listening at: http://0.0.0.0:8080 (1)
[2017-08-25 10:50:23 +0000] [1] [INFO] Using worker: sync
[2017-08-25 10:50:23 +0000] [7] [INFO] Booting worker with pid: 7
[2017-08-25 10:50:23 +0000] [7] [ERROR] Exception in worker process
Traceback (most recent call last):
  File "/env/lib/python3.5/site-packages/gunicorn/arbiter.py", line 578, in spawn_worker
    worker.init_process()
  File "/env/lib/python3.5/site-packages/gunicorn/workers/base.py", line 126, in init_process
    self.load_wsgi()
  File "/env/lib/python3.5/site-packages/gunicorn/workers/base.py", line 135, in load_wsgi
    self.wsgi = self.app.wsgi()
  File "/env/lib/python3.5/site-packages/gunicorn/app/base.py", line 67, in wsgi
    self.callable = self.load()
  File "/env/lib/python3.5/site-packages/gunicorn/app/wsgiapp.py", line 65, in load
    return self.load_wsgiapp()
  File "/env/lib/python3.5/site-packages/gunicorn/app/wsgiapp.py", line 52, in load_wsgiapp
    return util.import_app(self.app_uri)
  File "/env/lib/python3.5/site-packages/gunicorn/util.py", line 352, in import_app
    __import__(module)
  File "/home/vmagent/app/main.py", line 19, in <module>
    app = bookshelf.create_app(config)
  File "/home/vmagent/app/bookshelf/__init__.py", line 49, in create_app
    model = get_model()
  File "/home/vmagent/app/bookshelf/__init__.py", line 107, in get_model
    from . import model_datastore
  File "/home/vmagent/app/bookshelf/model_datastore.py", line 16, in <module>
    from google.cloud import datastore
  File "/env/lib/python3.5/site-packages/google/cloud/datastore/__init__.py", line 61, in <module>
    from google.cloud.datastore.client import Client
  File "/env/lib/python3.5/site-packages/google/cloud/datastore/client.py", line 33, in <module>
    from google.cloud.datastore.query import Query
  File "/env/lib/python3.5/site-packages/google/cloud/datastore/query.py", line 19, in <module>
    from google.api.core import page_iterator
ImportError: No module named 'google.api.core'
[2017-08-25 10:50:23 +0000] [7] [INFO] Worker exiting (pid: 7)
[2017-08-25 10:50:24 +0000] [1] [INFO] Shutting down: Master
[2017-08-25 10:50:24 +0000] [1] [INFO] Reason: Worker failed to boot.
Run Code Online (Sandbox Code Playgroud)

Mik*_*ert 8

tl; dr:升级你google-cloud0.27,它应该解决问题.


我相信这是新google-cloud依赖项的错误.在我的情况下,google-cloud==0.25在其中引入这些依赖setup.py:

 'google-cloud-core >= 0.24.0, < 0.25dev',
 'google-cloud-datastore >= 1.0.0, < 2.0dev',
Run Code Online (Sandbox Code Playgroud)

就在最近的8月24日(提交此问题的前一天),该google-cloud-datastore软件包已更新为1.3.0.

不幸的是,google-cloud-datastore1.3.0取决于更新版本google-cloud-core:

 'google-cloud-core >= 0.27.0, < 0.28dev',
Run Code Online (Sandbox Code Playgroud)

但似乎这个版本冲突没有得到解决/未经过使用旧版本的pip警告.但是,google-cloud-datastore想要from google.api.core import page_iterator,google.api.core直到0.27.0然后,一直没有添加,然后一切都破裂.

我相信"bug"在过载中广泛依赖google-cloud===0.25(或者可能是你正在使用的任何版本).

我相信我们的"修复"是升级到最新版本google-cloud=0.27.

虽然"正确的修复"是为了google-cloud改善它们的版本依赖性,而不是那么广泛,或者有可能破坏与已发布模块的向后兼容性.