我用的是Pycharm 4,带烧瓶0.10.1,python 3.4
从pycharm内部运行烧瓶应用程序时,如果使用以下命令运行:
app.run(debug=True)
忽略我的断点。经过一些谷歌搜索,我发现为了让PyCharm在断点处停止,我应该运行flask:
app.run(debug=True, use_reloader=False)
现在PyCharm正确地在断点处停止,但是我错过了自动转载功能。
有没有办法让这两种方法一起工作?
使用Python2.7这两种方法都有效
我把这个报告给了皮查姆:https://youtrack.jetbrains.com/issue/PY-13976
我将从一个简短的答案开始:不,任何版本的PyCharm到4.0.1都无法满足您的需求。
问题是,当您使用重新加载程序时,Flask应用程序在子进程中运行,因此PyCharm调试器附加到主进程,无法控制子进程。
在我看来,解决这个问题的最好方法是让Jetbrains在他们的IDE中构建一个“重启改变”特性。那么你根本不需要使用Werkzeug的重载器,你可以直接从PyCharm获得相同的功能。
在Jetbrains决定实施之前,我可以分享我的解决方案,这并不是非常糟糕。
我同意这不是完美的,但一旦Ctrl-D进入你的肌肉记忆,你甚至不会考虑它。
祝你好运!
问题是,使用
use_reloader=True
时,werkzeug应用程序在主应用程序的单独(子)线程中启动,而PyCharm无法正确处理断点,因为它们在线程启动时丢失。你可以试着沿着这条线索走:http://forum.jetbrains.com/thread/PyCharm-776但看来进展不大。
我建议使用类似Python的
pdb
,即:我发现在PyCharm 2018.1.2中,运行配置中有FLASK_DEBUG checbox:
在进行一些更改后,保存文件将触发重新加载操作。
相关问题 更多 >
编程相关推荐