通过 Google Cloud SDK 更新后无法启动 App Engine 应用程序

Unable to start App Engine application after updating it via Google Cloud SDK

最近,我在 Windows 7 64 位中使用命令 'gcloud components update' 通过 Google Cloud SDK 将 Google App Engine 从 1.9.17 更新到 1.9.18。之后,我无法使用 App Engine 启动器启动任何项目。收到此错误:

Traceback (most recent call last):
  File "C:\Program Files\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\dev_appserver.py", line 83, in <module>
    _run_file(__file__, globals())
  File "C:\Program Files\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\dev_appserver.py", line 79, in _run_file
    execfile(_PATHS.script_file(script_name), globals_)
  File "C:\Program Files\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\google\appengine\tools\devappserver2\devappserver2.py", line 36, in <module>
    from google.appengine.tools.devappserver2 import dispatcher
  File "C:\Program Files\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\google\appengine\tools\devappserver2\dispatcher.py", line 29, in <module>
    from google.appengine.tools.devappserver2 import module
  File "C:\Program Files\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\google\appengine\tools\devappserver2\module.py", line 71, in <module>
    from google.appengine.tools.devappserver2 import vm_runtime_factory
  File "C:\Program Files\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\google\appengine\tools\devappserver2\vm_runtime_factory.py", line 25, in <module>
    from google.appengine.tools.devappserver2 import vm_runtime_proxy
  File "C:\Program Files\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\google\appengine\tools\devappserver2\vm_runtime_proxy.py", line 29, in <module>
    from google.appengine.tools.devappserver2 import log_manager
  File "C:\Program Files\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\google\appengine\tools\devappserver2\log_manager.py", line 34, in <module>
    from google.appengine.tools.docker import containers
  File "C:\Program Files\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\google\appengine\tools\docker\containers.py", line 47, in <module>
    import docker
ImportError: No module named docker
2015-03-05 19:11:27 (Process exited with code 1)

我什至安装了最新的 Google Cloud SDK,但我遇到了同样的错误。

我能够安装 appengine SDK 1.9.18(不使用 Google Cloud SDK)并且能够成功 运行 项目。

此错误仅发生在 Windows 7.

中通过 Google Cloud SDK 安装的 App Engine 启动器

App Engine 问题跟踪器中提出了这个问题:Issue 125。我推荐你给这个问题加注星标。

我今天重装app engine sdk遇到了这个问题。我无法在启动器中 运行 我的代码。

我记得以前看过没有用过pip app engine,不过现在我已经解决了问题

简而言之,我所做的是:

  1. 安装pip的脚步https://pip.pypa.io/en/latest/installing.html(这也正确安装了setuptools)

  2. 通过 pip 安装 docker-py:pip install docker-py 并准备就绪,我现在可以 运行 我的代码在启动器中

P.S。 以前我尝试安装从 https://github.com/docker/docker-py 下载的 docker-py 包,但是缺少安装工具,下载并安装包没有用。所以将它与 pip 一起使用。

目前,这是 Cloud SDK 中捆绑的 dev_appserver 的一个问题。修复程序很快就会出来。同时,您的选择是: 1) 在使用 Cloud SDK 时使用 gcloud preview app run 到 运行 您的应用 2) 安装独立的 AppEngine SDK(您在问题中已经提到)

如果安装 docker-py 不起作用并且堆栈跟踪显示错误行是:

from docker import docker

将此行更改为:

import docker

Source

跳转到@Tzach 的回答并添加一些信息。

要修改的文件是containers.py

对我来说,它位于此处: C:\程序Files\Google\CloudSDK\google-cloud-sdk\platform\google_appengine\google\appengine\tools\docker

如果因为文件在应用程序中打开而无法修改,其实是文件夹被保护了。只需 copy/paste 桌面上的文件并从那里修改它。然后将其复制回原始文件夹。