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

时间:2015-04-30 06:55:23

标签: python debugging flask ide web-development-server

我输入的打印语句多于代码。它杀了我。

如果通过下面调用烧瓶开发服务器,我可以使用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中的调试器会让我的工作变得更轻松。

4 个答案:

答案 0 :(得分:2)

您通过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上看到交互式行...

答案 1 :(得分:2)

我在Miguel Grinberg的书中遇到了同样的问题。要回答如何为您的项目“配置PyCharm”的问题,我提供以下评论。

要继续使用PyCharm以利用其光荣的调试器,请转到“编辑配置”,然后在该对话框中确保您位于“配置”选项卡上。在那里,两个顶部文本框是:

  

脚本:设置为manage.py的路径

     

脚本参数:runserver

顺便说一下,我正在使用PyCharm 4.5.3,虽然我怀疑以下版本中至少有一些我已经使用过。现在从PyCharm运行应用程序会调用 runserver 命令:

python manage.py runserver 

这将运行烧瓶开发服务器,即app.run()。 “配置”选项卡允许我们指定运行特定脚本 manage.py ,以及要使用的命令行参数,例如:在这种情况下, runserver 。在PyCharm中运行应用程序后,查看“运行”或“调试”窗口中输出的顶行,您将看到其他条目: - 文件路径/ manage.py runserver。

您可能在脚本参数文本框中指定了 shell 而不是runserver,在这种情况下,您可以在PyCharm中运行应用程序后找到自己的shell。

默认的Manager(app)命令是 runserver shell。 db命令添加在manage.py的以下行中:

manager.add_command('db', MigrateCommand) 

在其下添加了命令 test 。注意 def test()之前的 @ manager.command 装饰器。

要获取命令行上所有Manager(app)命令的列表:

python manage.py

如果您在本教程的Application Factory部分,您应该看到 {test,shell,db,runserver} 。要获得任何一种命令类型的帮助:

python manage.py parameter -?

答案 2 :(得分:1)

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

PyCharm configuration example

答案 3 :(得分:1)

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

  • 选中“调试”复选框
  • 添加--no-reload作为烧瓶参数
  • 添加--without-threads作为烧瓶参数

这是我可以获得全面调试支持的唯一方法:

Run Configuration