You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用print语句调试?终端未显示print输出的问题排查

关于使用print调试及Flask中print输出不显示的问题解答

嘿,我来帮你搞定这两个问题,结合你给出的Flask代码片段,给你详细说明:

一、如何用print语句做调试

print是最简单直接的调试方式,在你的代码里灵活插入就行:

  • 查看变量/状态:在关键步骤插入print,把你想观察的内容传进去。比如在你的分类遍历循环里,这样加:
    for category in categories:
        # 打印当前处理的分类名称,确认循环是否正常遍历
        print(f"正在处理分类:{category.name}(ID:{category.id})")
        categoryItems = session.query(CatalogItem).filter_by(category_id=category.id).all()
        # 打印该分类下的条目数量,验证查询结果是否符合预期
        print(f"该分类下找到{len(categoryItems)}个条目")
    
  • 打印对象细节:如果想查看对象的所有属性,直接打印对象的__dict__属性就行,比如print(category.__dict__),能看到这个Category对象的所有字段和值。
  • 标记调试点:为了在一堆输出里快速定位,给print加个标识文本,比如print("=== 进入categoriesJSON函数开始处理 ==="),这样一眼就能找到对应的调试输出。

二、终端看不到print输出的常见原因及解决办法

结合你用的Flask应用,大概率是这几个情况:

  • 没开Flask调试模式:默认情况下Flask会缓冲输出,开启调试模式后会实时把print内容输出到终端。启动应用时加上debug=True:
    if __name__ == '__main__':
        app.run(debug=True)
    
    或者用环境变量开启:Linux/macOS终端输入export FLASK_DEBUG=1,Windows终端输入set FLASK_DEBUG=1,再启动你的application.py。
  • 输出被Python缓冲了:Python的标准输出在某些场景下会攒够一定内容才输出,你可以强制刷新输出流,比如:
    import sys
    print("调试信息", flush=True)
    
    或者启动脚本时加-u参数禁用缓冲:python -u application.py。
  • 请求没触发目标路由:可能你访问的路径不对,导致categoriesJSON函数根本没执行,自然看不到print输出。先确认你访问的是http://localhost:5000/catalog/json(端口号看你Flask的配置),触发这个路由后再看终端。
  • 日志配置把输出导走了:如果你的应用配置了logging模块,可能把标准输出重定向到日志文件了。检查代码里有没有类似logging.basicConfig(filename='app.log', level=logging.INFO)的配置,去对应的日志文件里找找print内容。
  • 找错了终端窗口:有时候启动Flask的终端被你最小化或者切换了,一定要看启动application.py的那个终端窗口哦。

内容的提问来源于stack exchange,提问作者digi_life

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:01:37