debugging 将pycharm调试器与flask应用程序工厂一起使用

9fkzdhlc  于 2022-11-14  发布在  PyCharm
关注(0)|答案(5)|浏览(186)

我输入的打印语句比代码还多。快累死我了。
如果通过下面的方式调用flask开发服务器,我可以使用PyCharm调试器

from ersapp import app

if __name__ == '__main__':
    app.run(debug=True)

我在Miguel Grinberg's book中使用了一个应用程序管理器(flask-script)。

(env)$ python manage.py runserver

以及appdirectory/__init__.py中的值

def create_app(config_name):
    webapp = Flask(__name__)
    ...
    return webapp

Pycharm中的调试器会使事情变得更容易,因为这是我工作的地方。

jhkqcmku

jhkqcmku1#

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

5hcedyr0

5hcedyr02#

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

  • 选择“调试”复选框
  • add --no-reload作为flask参数
  • add --without-threads作为flask参数

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

5m1hhzi4

5m1hhzi43#

您通过CLI手动运行了项目。要使用PyCharm IDE调试,您必须执行configure PyCharm for your project,然后通过PyCharm运行此调试。
但是如果你想在没有PyCharm的情况下运行程序,你可以使用pdb库作为调试目标。

import pdb

def my_def():
    try:
        x = 7 / 0
    except Execption as e:
        pdb.set_trace()

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

egmofgnx

egmofgnx4#

我在读Miguel Grinberg的书时也遇到了同样的问题。为了回答如何为你的项目“配置PyCharm”这个问题,我提供了以下评论。
要想继续使用PyCharm来利用它出色的调试器,请转到编辑配置,并在该对话框中确保您位于配置选项卡上。在该对话框中,顶部的两个文本框是:
脚本:设置为www.example.com的路径manage.py
脚本参数:运行服务器
顺便说一句,我使用的是PyCharm 4.5.3,尽管我怀疑至少在我使用过的几个以前的版本中,以下情况是正确的。现在从PyCharm运行应用程序将调用 runserver 命令:

python manage.py runserver

这将运行flask开发服务器,即app.run()。配置选项卡允许我们指定运行特定脚本 * manage.py ,以及要使用的命令行参数,例如在本例中使用的 runserver。在PyCharm中运行应用程序后,请查看运行或调试窗口中输出的第一行,您将在其他条目中看到:--/manage.py运行服务器文件路径 *
您可能在脚本参数文本框中指定了 shell 而不是runserver,在这种情况下,在PyCharm中运行应用程序后,您会发现自己在shell中。
默认的管理器(app)命令为 runservershell。 db命令添加到www.example.com的以下行中manage.py:

manager.add_command('db', MigrateCommand)

下面添加了命令 test。注意 def test() 之前的 @manager.command 装饰器。
要获取所有管理器(app)命令的列表,请在命令行中键入:

python manage.py

如果您在教程的应用程序工厂部分,您应该看到 {test,shell,db,runserver}。要获得任何命令类型的帮助:

python manage.py parameter -?
xmq68pz9

xmq68pz95#

最后,我用pyCharm pro 2022处理了这个问题,在我看来,这个问题是在IDE Flask模板中,所以我可能会使用常规的Python项目,设置如下:
1).设置环境:

FLASK_DEBUG = 1

2).使用pyCharm的常规Python项目:

相关问题