main.py抛出“ImportError:没有名为app的模块”

时间:2012-06-05 14:53:26

标签: python google-app-engine

我的应用程序根目录中有一个名为main.py的文件。此文件包含启动应用程序的代码:

app = webapp2.WSGIApplication(routes = routes, debug = True, config = config)

def main():
  app.run()

if __name__ == '__main__':
  main()

我在app.yaml中有这个,

- url: /.*
  script: main.app

升级到1.6.6 SDK后,出现以下错误:

ERROR    2012-06-05 13:39:01,856 wsgi.py:189] 
Traceback (most recent call last):
File "/Users/jdoe/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/runtime/wsgi.py", line 187, in Handle
handler = _config_handle.add_wsgi_middleware(self._LoadHandler())
File "/Users/jdoe/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/runtime/wsgi.py", line 236, in _LoadHandler
__import__(cumulative_path)
ImportError: No module named app

如果我将main.py重命名为main.py以外的任何内容并相应地更新app.yaml,则此错误消失,我可以运行该应用。

为什么我的主程序不再需要名为main.py的文件?在App Engine SDK下载页面上,他们说他们现在在SDK中包含了Python 2.7的实验版本,这是否与我遇到的问题有关?

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我的评论作为答案:

我自己解决了这个问题。在main.py所在的同一个目录中,我创建了一个名为main的包。在app.yaml中,我指定查看main.app。似乎如果一个名为main的包存在于与main.py相同的目录中,那么Python将在包内找到一个名为app的模块。但是如果没有名为main的包存在,那么很高兴看到main.py。