带端点教程的ImportError

时间:2014-12-26 20:21:45

标签: python google-app-engine

我遇到了GAE教程的问题。为了开始最基本的工作,我不得不重新安装pyyaml。

现在我得到了:

INFO     2014-12-26 15:06:11,200 module.py:718] default: "POST /_ah/spi/BackendService.getApiConfigs HTTP/1.1" 500 -
INFO     2014-12-26 15:06:11,203 module.py:718] default: "GET /_ah/api/discovery/v1/apis HTTP/1.1" 500 60
ERROR    2014-12-26 20:06:11,236 wsgi.py:263]
Traceback (most recent call last):
  File "C:\Program Files\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\google\appengine\runtime\wsgi.py",
line 240, in Handle
    handler = _config_handle.add_wsgi_middleware(self._LoadHandler())
  File "C:\Program Files\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\google\appengine\runtime\wsgi.py",
line 299, in _LoadHandler
    handler, path, err = LoadObject(self._handler)
  File "C:\Program Files\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\google\appengine\runtime\wsgi.py",
line 85, in LoadObject
    obj = __import__(path[0])
ImportError: No module named helloworld_api

我多次跟踪tutorial到点。每次都有相同的错误。 我试图解决这个问题的当前情况如下:

的app.yaml

application: *my id here*
version: 1
runtime: python27
threadsafe: true
api_version: 1

handlers:
# Endpoints handler
- url: /_ah/spi/.*
  script: helloworld_api.APPLICATION

libraries:
- name: pycrypto
  version: latest
- name: webapp2
  version: "2.5.2"
- name: endpoints
  version: 1.0

.py相当长,但它是步骤7中的复制粘贴here

无论我如何启动它,命令行或App Engine Launcher,都会发生同样的错误。它显然很奇怪,因为它明确地从Launcher发射,它认识到它。启动服务器时没有错误。当我尝试基础教程时,它工作得很好,有端点的东西只是没有点击我。

我在API资源管理器上看到一个空白屏幕。

文件结构是:

-project
 -django
   -helloworld
    app.yaml
    helloworld_api.py
    helloworld.py

我使用来自Google Cloud SDK Shell的dev_appserver.py helloworld来调用django目录中的命令

3 个答案:

答案 0 :(得分:1)

如果您可以将helloworld_api.py的内容添加到您的问题中,我可以查看它并查看是否存在问题,因为有时候,使用Python,您必须准确了解文档的结构,或者它不会被识别为文件。我之前遇到过这个问题。

答案 1 :(得分:1)

我刚从该教程页面复制了app.yaml和helloworld_api.py的内容,它完美无缺。我建议你检查文件的内容是否与教程页面相符。

另外,我看到你的目录中有一个helloworld.py文件。我在教程中没有看到这个文件。它包含什么?

答案 2 :(得分:0)

我也有同样的问题,但我能够解决它。我认为您需要确保.py文件的文件名在app.yaml中是相同的。

就我而言,我在main.py中创建了应用程序。因此,请确保在app.yaml中将其列为main.application。它需要是主要的"而不是helloworld_api.APPLICATION。同时确保" application"匹配。