2015-01-02 136 views
3

我想弄清楚如何在Flask(Werkzeug)调试器和使用PyCharm的调试器之间调试我的Flask应用程序。据我已经得到了为具有两个PyCharm运行配置在PyCharm中调试烧瓶

  1. 一个,我用“运行”,并提供给应用程序脚本--debug标志调用;和
  2. 一个,我以“调试”,并提供给应用程序脚本

在我的应用程序的脚本支持的标志与”

if __name__ == "__main__": 

    import argparse 
    parser = argparse.ArgumentParser(description='Runs Web application with options for debugging') 
    parser.add_argument('-d', '--debug', action='store_true', 
         dest='debug_mode', default=False, 
         help='run in Werkzeug debug mode') 
    parser.add_argument('-p', '--pydebug', action='store_true') 
         dest='debug_pycharm', default=False, 
         help='for use with PyCharm debugger') 

    cmd_args = parser.parse_args() 
    app_options = dict() 

    app_options["debug"] = cmd_args.debug_mode or cmd_args.debug_pycharm 
    if cmd_args.debug_pycharm: 
     app_options["use_debugger"] = False 
     app_options["use_reloader"] = False 

    application.run(**app_options) 

此工作的--pydebug标志调用,并符合要求我不需要编辑任何代码来部署到服务器;但是我不确定这是最好的方法。有一件事我需要记住第二种配置是用“Debug”启动的(不是“Run”),而第一个是用PyCharm中的“Run”(而不是“Debug”)启动的。

是否有更好的方法来支持这两种方法来在PyCharm中进行调试,使用PyCharm的某些功能(例如,这使我能够检测何时调用“调试”而不是“运行”)或更智能地使用Flask的功能。

回答

3

一个非常简单的方法来检查,如果您的应用程序的PyCharm调试器下运行是:

'pydevd' in sys.modules