V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
sudoy
V2EX  ›  问与答

Python flask 报错解决办法

  •  
  •   sudoy · 2022-02-23 22:24:57 +08:00 · 1180 次点击
    这是一个创建于 1002 天前的主题,其中的信息可能已经有所发展或是发生改变。

    今天运行 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 是不存在这个问题的,大家遇到过这样的问题吗?

    3 条回复    2022-02-24 07:21:17 +08:00
    SjwNo1
        1
    SjwNo1  
       2022-02-23 23:02:22 +08:00   ❤️ 1
    __init__.py 删了
    ClericPy
        2
    ClericPy  
       2022-02-24 00:07:34 +08:00   ❤️ 2
    稍微理解一下包的结构吧...

    flask run 是当包启动的, app 里导入 util 时通过相对路径(因为是同一个包)
    python app.py 是把 app 当 module 启动的, 当前路径会算在 sys.path 里面所以会导入成功
    sudoy
        3
    sudoy  
    OP
       2022-02-24 07:21:17 +08:00
    @ClericPy 谢谢大佬,清晰明了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5060 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 03:46 · PVG 11:46 · LAX 19:46 · JFK 22:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.