我输入的打印语句多于代码。快要死我了。
如果通过下面调用 Flask 开发服务器,我可以使用 PyCharm 调试器
from ersapp import app
if __name__ == '__main__':
app.run(debug=True)
我遵循 Miguel Grinberg 书中中的示例,并使用了应用程序管理器(flask-script)。我在应用程序目录中调用服务器,如下所示
(env)$ python manage.py runserver
并在
appdirectory/__init__.py
def create_app(config_name):
webapp = Flask(__name__)
...
return webapp
Pycharm 中的调试器会让事情变得更容易,因为那是我工作的地方。
如果您使用应用程序工厂模式(即使用 creat_app() 而不使用 run.app() main),您可以使用标准“flask”运行配置模板(社区版本可能没有这些,不确定)。 但是,您会注意到调试器不会在断点处停止,因为 DEBUG 中的 Flask 应用程序运行重新加载器,这意味着它在不同的线程中运行,而 Pycharm 无法捕获它。 因此,为了让它不仅在午餐时中断,而且在您想要调试的任何 API 调用上都中断,请确保:
这是我获得完整调试支持的唯一方法:
您通过 CLI 手动运行该项目。要使用 PyCharm IDE 调试,您必须为您的项目配置 PyCharm,然后通过 PyCharm 运行它。
但如果您想在没有 PyCharm 的情况下运行程序,可以使用 pdb 库作为调试目标。尝试下面的代码:
import pdb
def my_def():
try:
x = 7 / 0
except Execption as e:
pdb.set_trace()
运行此程序时,您可以在 CLI 上看到交互行...
我在阅读 Miguel Grinberg 的书时也遇到了同样的问题。为了回答如何为您的项目“配置 PyCharm”这个问题,我提供以下评论。
要留在 PyCharm 中以利用其出色的调试器,请转到“编辑配置”,并在该对话框中确保您位于“配置”选项卡上。在那里,两个顶部文本框是:
脚本:设置为你的manage.py的路径
脚本参数:runserver
顺便说一句,我正在使用 PyCharm 4.5.3,尽管我怀疑至少在我之前工作过的几个版本中以下情况是正确的。现在从 PyCharm 运行应用程序会调用 runserver 命令:
python manage.py runserver
这将运行 Flask 开发服务器,即 app.run()。配置选项卡允许我们指定运行特定的脚本manage.py,以及要使用的命令行参数,例如runserver 就像本例一样。在 PyCharm 中运行应用程序后,查看“运行”或“调试”窗口中输出的第一行,您将看到其他条目:--file pathto/manage.py runserver。
您可能在脚本参数文本框中指定了 shell 而不是 runserver,在这种情况下,在 PyCharm 中运行应用程序后您会发现自己处于 shell 中。
默认的 Manager(app) 命令是 runserver 和 shell。 db 命令添加在 manage.py 的以下行中:
manager.add_command('db', MigrateCommand)
在其下方添加命令 test。请注意 def test() 之前的 @manager.command 装饰器。
要获取所有管理器(应用程序)命令的列表,请在命令行上键入:
python manage.py
如果您在本教程的“应用程序工厂”部分,您应该会看到 {test, shell, db, runserver}。要获取有关任何一种命令的帮助,请输入:
python manage.py parameter -?