Python Udacity CS253使用GAE,处理程序错误

Python Udacity CS253使用GAE,处理程序错误,python,google-app-engine,python-2.7,python-imaging-library,httphandler,Python,Google App Engine,Python 2.7,Python Imaging Library,Httphandler,我遇到了路障。碰巧,另一名学生艾哈迈德同时也遇到了类似的路障。到目前为止,我们还没有从Udacity论坛得到答案,所以我想我会在这里转贴,希望尽快得到帮助。问题出现在这里:。(如果您未登录,该链接可能无法工作) 到目前为止,我们两人都做对了,并取得了进展,但从现在起,一切都停止了,我们都被难住了。这是我给艾哈迈德的最后一篇帖子: 我在Word中比较了你的日志和我的日志。当您去掉诸如时间、字体和文件路径之类的东西时,会有一些区别。我们都得到了: 警告api_server.py:331]无法初始化图

我遇到了路障。碰巧,另一名学生艾哈迈德同时也遇到了类似的路障。到目前为止,我们还没有从Udacity论坛得到答案,所以我想我会在这里转贴,希望尽快得到帮助。问题出现在这里:。(如果您未登录,该链接可能无法工作)

到目前为止,我们两人都做对了,并取得了进展,但从现在起,一切都停止了,我们都被难住了。这是我给艾哈迈德的最后一篇帖子:

我在Word中比较了你的日志和我的日志。当您去掉诸如时间、字体和文件路径之类的东西时,会有一些区别。我们都得到了:

警告api_server.py:331]无法初始化图像api;您可能缺少Python“PIL”模块

错误wsgi.py:262]

我们的追踪结果几乎相同

回溯(最近一次呼叫最后一次): 文件“C:\Program Files\(x86)\Google\Google\U appengine\Google\appengine\runtime\wsgi.py”,第239行,位于句柄中 handler=\u config\u handle.add\u wsgi\u中间件(self.\u LoadHandler()) LoadHandler中的文件“C:\Program Files\(x86)\Google\Google\U appengine\Google\appengine\runtime\wsgi.py”,第298行 处理程序,路径,err=LoadObject(self.\u处理程序) LoadObject中第84行的文件“C:\Program Files\(x86)\Google\Google\U appengine\Google\appengine\runtime\wsgi.py” obj=导入(路径[0])

但我们有不同形式的行为
(/

我有一件事你没有

警告2013-12-09 18:18:41795 simple_search_stub.py:1018]无法从c:\users\appdata\local\temp\appengine.udacity7676\search_indexes读取搜索索引

那么我们该怎么办呢?我不知道,但我确实有很多问题希望有人能回答:

  • 如果这个PIL模块如此重要,为什么它是一个单独的下载?为什么GAE之前没有告诉我们
  • 为什么我们都在Udacity测验中取得了成功,直到现在?换句话说,这个练习有什么不同,突然让PIL变得至关重要
  • 我在app engine网站上查看了PIL。这是一个图像操纵器,他们给出的例子是gae图标。这让我想知道我们在这节课上的进展是否因为有人要求图标作为结果的一部分而遭到破坏?据我所知,在这个练习中没有图像,我也不知道有哪个应用程序的l一个favicon的失败让整个事情都崩溃了。如果是这样的话,那就是疯狂和浪费
  • 我访问了PIL下载站点,结果发现安装程序不仅希望在默认位置[c:\python27]找到Python,没有办法给它另一条路。我尝试了很多次。由于我的python不在默认位置,要么我运气不好,要么我必须重新安装它,然后重新开始。这些工程师在与我们这样的新手合作时如此灵活,真是太好了
  • 我注意到你说你实际上已经安装了PIL,但是你还是收到了这个错误消息。那么我们该怎么办呢
  • 我还将本课中的代码与本练习中的代码进行了比较
  • 我有
    MainHandler
    ,他们有
    MainPage
    ,我注意到了这一点 以前,但我不认为这有什么意义。另外,我的来了 用这个名字,我没有创造它
  • 三重引号的间距似乎不同,但我很确定我在其他地方听说间距无关紧要,所以这不应该是个问题
  • “我没有内容类型行,”讲师评论道
  • 他添加了
    out
    ,如
    self.response.out.write(form)
    。这不在我的默认文件中。我只有
    self.response.write(form)
  • (/
    看起来不对。
    它应该是

    对于GAE来说,
    PIL
    库根本不是必需的(至少在您的情况下)。因此,它只是一个警告,您可以忽略它。(它与您的错误无关)

    如果您在最后的
    应用程序
    声明中使用了正确的处理程序
    ,则用
    主页
    替换的
    主处理程序
    一点也不成问题

    app = webapp2.WSGIApplication([('/', MainPage),
                                   ('/testform', TestHandler)],
                                  debug=True)
    
    此外,间距并不重要,但放置三重引号字符串的块很重要

    form = 
    """
    <form action="/testform">
        <input name="q"> <input type="submit">
    </form>
    """
    
    虽然它应该是

    app = webapp2.WSGIApplication([('/', MainPage), # <-- comma at the end of line
                                   ('/testform', TestHandler)], # <-- comma before hash
                                  debug=True)
    
    app=webapp2.WSGIApplication([('/',主页),#
    
    INFO 2013-12-15 21:18:40151模块。py:617]默认值:“获取/
    HTTP/1.1“500-
    信息2013-12-15 21:18:40190模块。py:617]默认值:“获取
    /favicon.ico HTTP/1.1“304-
    错误2013-12-16 03:18:48500 wsgi.py:262]
    回溯(最近一次呼叫最后一次):
    文件“C:\…\appengine\runtime\wsgi.py”,第239行,在句柄中
    handler=\u config\u handle.add\u wsgi\u中间件(self.\u LoadHandler())
    文件“C:\…\appengine\runtime\wsgi.py”,第298行,在加载处理程序中
    处理程序,路径,err=LoadObject(self.\u处理程序)
    LoadObject中第84行的文件“C:\…\appengine\runtime\wsgi.py”
    obj=\uuuuuuuuuuuuuu导入(路径[0])
    文件“C:\…\udacity7676\main.py”,第18行,在
    ('/testform',TestHandler)],
    TypeError:“tuple”对象不可调用
    信息2013-12-15 21:18:48512模块。py:617]默认值:“获取/
    HTTP/1.1“500-
    

    我猜处理程序的名称不一致,这就是问题所在,但我宁愿在盲目前进之前得到你的反馈。我也猜元组是不可调用的,因为同样的原因。但是我想不起任何修改
    wsgi.py
    的指令。我还想favicon错误会出现在这个PIL问题上。

    Ashish Nitin Patil的回答涵盖了其余几点,但为了完整性起见,self.response.out是self.response的别名(它只返回自身),以便与以前版本的framewo兼容
    app = webapp2.WSGIApplication([('/', MainPage)
                                   ('/testform', TestHandler)]
                                  debug=True)
    
    app = webapp2.WSGIApplication([('/', MainPage), # <-- comma at the end of line
                                   ('/testform', TestHandler)], # <-- comma before hash
                                  debug=True)
    
    INFO     2013-12-15 21:18:40,151 module.py:617] default: "GET / 
    
    HTTP/1.1" 500 -
    INFO     2013-12-15 21:18:40,190 module.py:617] default: "GET 
    
    /favicon.ico HTTP/1.1" 304 -
    ERROR    2013-12-16 03:18:48,500 wsgi.py:262] 
    
    Traceback (most recent call last):
    
      File "C:\...\appengine\runtime\wsgi.py", line 239, in Handle
    
        handler = _config_handle.add_wsgi_middleware(self._LoadHandler())
    
      File "C:\...\appengine\runtime\wsgi.py", line 298, in _LoadHandler
    
        handler, path, err = LoadObject(self._handler)
    
      File "C:\...\appengine\runtime\wsgi.py", line 84, in LoadObject
    
        obj = __import__(path[0])
    
      File "C:\...\udacity7676\main.py", line 18, in <module>
    
        ('/testform', TestHandler)],
    
    TypeError: 'tuple' object is not callable
    
    INFO     2013-12-15 21:18:48,512 module.py:617] default: "GET / 
    
    HTTP/1.1" 500 -