Python flask 报错解决办法

2022-02-23 22:24:57 +08:00
 sudoy

今天运行 flask run 的时候报错如下:

(env) Duang@Mac-mini mysite $ flask run
 * Serving Flask app 'app.py' (lazy loading)
 * Environment: development
 * Debug mode: on
Usage: flask run [OPTIONS]
Try 'flask run --help' for help.

Error: While importing 'mysite.app', an ImportError was raised.

我的项目简化版的文件结构如下:

mysite/
	static/
    	style.css
    templates/
    	index.html
    __init__.py
    app.py
    utils.py

经过排查发现是因为app.py中引入了utils.py的一个模块导致

from utils import send_mail

改为如下以后问题解决了

from .utils import send_mail

直接运行 python app.py 是不存在这个问题的,大家遇到过这样的问题吗?

1201 次点击
所在节点    问与答
3 条回复
SjwNo1
2022-02-23 23:02:22 +08:00
__init__.py 删了
ClericPy
2022-02-24 00:07:34 +08:00
稍微理解一下包的结构吧...

flask run 是当包启动的, app 里导入 util 时通过相对路径(因为是同一个包)
python app.py 是把 app 当 module 启动的, 当前路径会算在 sys.path 里面所以会导入成功
sudoy
2022-02-24 07:21:17 +08:00
@ClericPy 谢谢大佬,清晰明了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/836038

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX