将pycharm调试器与烧瓶应用程序工厂一起使用

Bri*_*ach 9 python ide debugging web-development-server flask

我输入的打印语句多于代码.这太痛苦了.

如果通过下面调用烧瓶开发服务器,我可以使用PyCharm调试器

from ersapp import app

if __name__ == '__main__':
    app.run(debug=True)
Run Code Online (Sandbox Code Playgroud)

我在Miguel Grinberg的书中遵循了这个例子,并使用了一个应用程序管理器(flask-script).我在我的应用程序目录中调用服务器,如下所示

(env)$ python manage.py runserver
Run Code Online (Sandbox Code Playgroud)

并在 appdirectory/__init__.py

def create_app(config_name):
    webapp = Flask(__name__)
    ...
    return webapp
Run Code Online (Sandbox Code Playgroud)

Pycharm中的调试器会让事情变得更容易,因为那是我工作的地方.

Ráf*_*gan 7

尝试在“编辑配置”中配置此 python 运行配置。之后,在调试模式下运行。

PyCharm 配置示例


jpm*_*ris 7

如果您使用应用程序工厂模式(即使用 creat_app() 而不使用 run.app() main),您可以使用标准“flask”运行配置模板(社区版本可能没有这些,不确定)。但是,您会注意到调试器不会在断点处停止,因为 DEBUG 中的 Flask 应用程序运行重新加载器,这意味着它在不同的线程中运行,而 Pycharm 无法捕获它。因此,为了让它不仅在午餐时中断,而且在您想要调试的任何 API 调用上都中断,请确保:

  • 选择调试复选框
  • 添加 --no-reload 作为 Flask 参数
  • 添加 --without-threads 作为 Flask 参数

这是我获得完整调试支持的唯一方法:

运行配置


M.j*_*vid 1

您通过 CLI 手动运行该项目。要使用 PyCharm IDE 调试,您必须为您的项目配置 PyCharm,然后通过 PyCharm 运行它。
但如果您想在没有 PyCharm 的情况下运行程序,则可以使用pdb库作为调试目标。尝试下面的代码:

import pdb


def my_def():
    try:
        x = 7 / 0
    except Execption as e:
        pdb.set_trace()
Run Code Online (Sandbox Code Playgroud)

运行此程序时,您可以在 CLI 上看到交互行...