python - main.py 抛出 "ImportError: No module named app"

标签 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 的实验版本,这是否与我遇到的问题有关?

最佳答案

我的评论作为回答:

我自己解决了这个问题。在 main.py 所在的同一目录中,我创建了一个也称为 main 的包。在 app.yaml 中,我指定查看 main.app。似乎如果一个名为 main 的包与 main.py 存在于同一目录中,则 Python 会在包内查找名为 app 的模块。但是,如果不存在名为 main 的包,它会愉快地在 main.py 中查找。

关于python - main.py 抛出 "ImportError: No module named app",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10899611/

相关文章:

python - 混合使用 GAE 实例和 GCE VM

python - 缓存 get_serving_url() URL

python - Google 相册 API - 新版本?

python - 如何使用python将列表列表拆分为列表中的每个列表到一个字典

java - 删除 jdo 后是否重用 IdGeneratorStrategy.Identity 值

android - 带有 AppEngine 通信错误的 ReSTLet Android

python - 在 Google App Engine 上运行 Alembic 迁移

python - 通过索引访问行号

python - 遍历 MySQL 表并更新

Python Word Counter 只计算一次单词