我试图弄清楚如何在使用Flask(Werkzeug)调试器调试Flask应用程序和使用PyCharm的调试器之间轻松切换.我已经拥有两个PyCharm运行配置
>我用提供给应用程序脚本的“运行”和–debug标志调用的那个;和
>我用“调试”和提供给应用程序脚本的–pydebug标志调用的一个
与我的应用程序脚本中支持的标志一起使用,
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)
这行得通,并且满足了我不需要编辑任何代码即可部署到服务器的要求;但我不确定这是最好的方法.首先,我需要记住,第二个配置是用PyCharm中的“调试”(不是“运行”)启动的,而第一个配置是用PyCharm中的“运行”(不是“调试”)启动的.
是否有更好的方法来支持PyCharm中的这两种调试方法,或者使用PyCharm的某些功能(例如,允许我检测何时调用了“ Debug”而不是“ Run”),或者更聪明地使用了Flask的功能.
解决方法:
检查应用程序是否在PyCharm调试器下运行的一种非常简单的方法是:
'pydevd' in sys.modules