无法使用 gcloud 运行 dev_appserver.py

Posted

技术标签:

【中文标题】无法使用 gcloud 运行 dev_appserver.py【英文标题】:Unable to run dev_appserver.py with gcloud 【发布时间】:2016-01-04 05:01:11 【问题描述】:

我正在尝试使用我的应用程序目录中的命令 dev_appserver.py ./,但它会引发以下错误。

ERROR    2016-01-04 04:47:51,421 wsgi.py:263] 
Traceback (most recent call last):
  File "/Users/Joshua/Scripts/google-cloud-sdk/platform/google_appengine/google/appengine/runtime/wsgi.py", line 240, in Handle
    handler = _config_handle.add_wsgi_middleware(self._LoadHandler())
  File "/Users/Joshua/Scripts/google-cloud-sdk/platform/google_appengine/google/appengine/runtime/wsgi.py", line 299, in _LoadHandler
    handler, path, err = LoadObject(self._handler)
  File "/Users/Joshua/Scripts/google-cloud-sdk/platform/google_appengine/google/appengine/runtime/wsgi.py", line 85, in LoadObject
    obj = __import__(path[0])
  File "/Users/Joshua/Projects/inkren/skritter-api/main.py", line 2, in <module>
    from gcloud import datastore
ImportError: No module named gcloud

我正在运行一个安装了 gcloud 的 virtualenv,并且还安装了带有适当 python 组件的 gcloud sdk。当我运行 python ./main.py 时找到 gcloud 库。

# main.py

import webapp2
from gcloud import datastore


class MainPage(webapp2.RequestHandler):
    def get(self):
        client = datastore.Client(dataset_id='my-project')
        self.response.headers['Content-Type'] = 'text/plain'
        self.response.write('Hello, World!')

app = webapp2.WSGIApplication([
    ('/', MainPage),
], debug=True)

我想做的是能够在浏览器中本地运行我的代码。有没有办法让dev_appserver.py 识别 gcloud 库?

【问题讨论】:

你好。那很奇怪。能不能打开一个python shell,输入:from gcloud import datastore看看会不会报错? 记住 appengine 在模拟沙箱中运行,库必须在项目中可用,而不仅仅是在 virtualenv 中。请参阅有关包括第三方库的文档,顺便说一句,您到底为什么要尝试在 appengine 中使用数据存储客户端? @Kris Howdy,正如您可能已经猜到的那样,从我的 python 控制台运行它会返回没有错误。 @TimHoffman 我正在尝试制作从我们的数据存储区读取的 api 端点。我希望能够使用实时数据在本地进行测试,而无需部署。 【参考方案1】:

使用 gcloud 的 python 开发服务器还有问题吗?我从终端成功使用dev_appserver.py。 See reference.

也许install 和setup 指令比一年前有所改进。我相信安装会将文件 dev_appserver.py 放在您的系统路径中,即使在 Windows 上也是如此,因此可以从终端访问它。

【讨论】:

【参考方案2】:

我对此进行了一些研究,所以... 好的,这就是你必须做的。

喘口气

前往这位绅士的 GitHub 页面,然后将包下载为 zip。 https://github.com/dhermes/test-gcloud-on-gae

现在,您需要将他文件夹中的一些文件夹/文件添加到您的文件夹中,以使 gcloud 正常工作。

1) 打开application 文件夹并将vendor 文件夹放入您的根目录。此文件夹包含gcloud 包以及许多其他包。如果需要,您可以删除其他人。

2) 将appengine_config.py 也添加到您的根目录中。这个文件告诉应用引擎你的第三方包在哪里。

3) 也将darth.py 添加到您的根目录。这只是一个帮助文件。

实际上,应该这样做。这位先生写了一些脚本,用于使用带有应用引擎的第三方应用程序,它们非常有用。让我知道您的进口后是否在执行此操作后!

我在本地测试它,它完美地工作。基本上,任何第三方 python 包都可以与应用程序引擎一起使用,只要其中没有其他语言,例如 C

【讨论】:

Wowzers,做某事应该是相当标准的做法。我确实尝试过使用appengine_config.py 来处理第三方的东西,但无济于事,但稍后会尝试一下。 @Josh 是的,我知道......这并不像你想象的那么多。下载和3个复制/粘贴,您已完成。这只是因为蒂姆霍夫曼说的那样。 App Engine 在沙箱中运行,但它会运行任何只包含 python 代码的东西(我的意思是,想想看……它们只是 python 文件)。 我确实让它使用开发服务器识别 gcloud,但黑客供应商库并不是我真正想要处理的事情。处理更新时变得特别乏味。该示例中使用的版本是 0.3.3,当前稳定版是 0.8.0,它太旧了,甚至没有在他们的文档版本列表中列出。

以上是关于无法使用 gcloud 运行 dev_appserver.py的主要内容,如果未能解决你的问题,请参考以下文章

无法使用“gcloud spanner databases ddl update”命令执行 Spanner DDL 脚本

gCloud SDK无法在公司代理后面的macOS中安装

错误:(gcloud.app.deploy)INVALID_ARGUMENT:无法解析源

Cygwin 中的 Hadoop、gcloud 实用程序、bdutils。无连接,无法识别命令

无法将本地文件夹同步到 gcloud

无法使用 python 脚本切换 gcloud 平台帐户