繁体   English   中英

为什么 Google App Engine 找不到我的模块 (Python 3)?

[英]Why won't Google App Engine find my module (Python 3)?

我是 Google App Engine 的新手,遇到了应用找不到我的模块的问题。 我得到错误line 5, in <module> import foo as bar ModuleNotFoundError: No module named 'foo' 我有如下所示的当前文件结构(遵循Flask的精彩教程)。

问题是, routes.py无法导入foo.py

  • 应用引擎:/
    • 应用程序
      • 静态/CSS
      • 模板
      • __init__.py
      • 文件
      • 路线.py
    • 应用程序.yaml
    • 配置文件
    • 主文件
    • 要求.txt
    • 源上下文.json

为什么是这样? App Engine 上的文件在本地工作时的结构是否有特殊要求?

另外,为了让事情正常工作,我尝试将模块 foo 中的代码改为路由,并且代码有效。 但是代码不属于那里,我想更好地构建它,但应用程序在分离时会中断。 最后,我想添加目录“app engine”:/app/libs(或其他推荐),用于存储我的自定义内容。

编辑(从 routes.py 添加代码示例)

from flask import render_template, flash, redirect, url_for
from app import app
from app.forms import LookupForm
import logging
import foo as bar

@app.route("/")
@app.route("/index")

def index():
    return render_template("index.html")

我能够重现您遇到的错误。 以下是我的观察:

  • 您将foo模块存储在名为“app”的本地文件夹中(您的main.py文件所在的子目录)。
  • 为了在这种情况下引用模块,您需要在执行导入时包含子目录的名称。

更改routes.py文件中的以下行:

import foo as bar

到:

import app.foo as bar

我已经测试了这个解决方案,它对我有用。 如果有帮助,请告诉我。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM