通过 Google Cloud SDK 更新 App Engine 应用程序后无法启动它
Posted
技术标签:
【中文标题】通过 Google Cloud SDK 更新 App Engine 应用程序后无法启动它【英文标题】:Unable to start App Engine application after updating it via Google Cloud SDK 【发布时间】:2015-05-06 22:03:01 【问题描述】:最近,我在 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。我建议你为这个问题加注星标。
【问题讨论】:
我没有要检查的 Windows 机器,但显然C:\Program Files\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\lib\docker
没有正确安装 -- 你能检查那个目录是否存在以及里面有什么吗?最坏的情况,你应该可以从github.com/docker/docker-py 得到它...
是的,它在那里。我已经在另一个系统中安装了 Google Cloud SDK。那里也有同样的问题。
【参考方案1】:
我今天发生了这种情况,重新安装了app engine sdk。我无法在启动器中运行我的代码。
我记得读到没有使用pip app engine,但现在我已经解决了这个问题。
简而言之,我所做的是:
安装piphttps://pip.pypa.io/en/latest/installing.html的足迹(这样也正确安装了setuptools)
通过 pip 安装 docker-py:pip install docker-py 并准备就绪,我现在可以在启动器中运行我的代码
附: 之前尝试安装docker-py包,从https://github.com/docker/docker-py下载,但是缺少setuptools,下载安装包没有用。所以将它与 pip 一起使用。
【讨论】:
【参考方案2】:这是 Cloud SDK 中捆绑的 dev_appserver 目前存在的问题。修复程序很快就会出来。同时,您的选择是:
1) 使用 Cloud SDK 时使用gcloud preview app run
运行您的应用
2)安装独立的 AppEngine SDK(你已经在你的问题中提到过)
【讨论】:
哇,在这和this 之间,Google 真的在 1.9.18 上丢了球。请尽快修复。 是否有指向 Google 错误跟踪器的链接?能够提高对这个问题的关注度会很有用。 我按照建议安装了独立的 AppEngine SDK,将我的 $PATH 指向它,但仍然出现同样的错误。 我发现我必须在 google-cloud-sdk 和 AppEngine SDK 之间更改 Google App Engine Launcher 的 Preferences 中的 App Engine SDK 路径,具体取决于我是要部署还是运行它分别在我自己的系统上。【参考方案3】:如果安装 docker-py 不起作用并且堆栈跟踪显示错误行是:
from docker import docker
将此行更改为:
import docker
Source
【讨论】:
【参考方案4】:根据@Tzach 的回答并添加一些信息。
要修改的文件是containers.py
对我来说,它位于这里: C:\Program Files\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\google\appengine\tools\docker
如果因为文件在应用程序中打开而无法修改它,实际上是该文件夹受到保护。只需将文件复制/粘贴到您的桌面上并从那里进行修改。然后将其复制回原始文件夹中。
【讨论】:
以上是关于通过 Google Cloud SDK 更新 App Engine 应用程序后无法启动它的主要内容,如果未能解决你的问题,请参考以下文章
如何使用工作负载身份通过 Google Cloud .NET SDK 访问 Google Kubernetes Engine 中的 ESP?
google-cloud-sdk 安装因 python 语法错误而失败