将 pycharm 调试器与 Flask 应用程序工厂一起使用
using the pycharm debugger with a flask application factory
我输入的打印语句多于代码。快要死了。
如果通过下面调用 flask 开发服务器,我可以使用 PyCharm 调试器
from ersapp import app
if __name__ == '__main__':
app.run(debug=True)
我正在按照 Miguel Grinberg's book and an application manager (flask-script) 中的示例使用。我在我的应用程序目录中调用服务器,如下所示
(env)$ python manage.py runserver
并在 appdirectory/__init__.py
def create_app(config_name):
webapp = Flask(__name__)
...
return webapp
Pycharm 中的调试器会让事情变得更容易,因为那是我工作的地方。
您通过 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 上看到交互式行...
我在阅读 Miguel Grinberg 的书时遇到了同样的问题。为了回答如何为您的项目“配置 PyCharm”这个问题,我提供以下评论。
要留在 PyCharm 以利用其卓越的调试器,请转到“编辑配置”,并确保您在该对话框中位于“配置”选项卡上。在那里,顶部的两个文本框是:
Script: set to path of your manage.py
Script parameters: runserver
顺便说一下,我使用的是 PyCharm 4.5.3,尽管我怀疑至少在我使用过的几个以前的版本中以下内容是正确的。现在 运行 来自PyCharm 调用 runserver 命令:
python manage.py runserver
这会运行 flask 开发服务器,即 app.run()。配置选项卡允许我们指定 运行 特定脚本 manage.py,以及要使用的命令行参数,例如runserver 在这种情况下。在 运行 PyCharm 中的应用程序之后,查看 运行 或 Debug window 中输出的第一行,您将在其他条目中看到:- -file pathto/manage.py runserver.
您可能在脚本参数文本框中指定了 shell 而不是 runserver,在这种情况下您会发现自己在 shell在 运行 PyCharm 中的应用之后。
默认的 Manager(app) 命令是 runserver 和 shell。 db 命令被添加到下面的行中的 manage.py:
manager.add_command('db', MigrateCommand)
在下面添加命令test。注意 @manager.command 装饰器在 def test().
之前
要获取所有 Manager(app) 命令的列表,请在命令行中键入:
python manage.py
如果您在本教程的应用程序工厂部分,您应该看到 {test, shell, db, runserver}。要获得有关任何一个命令类型的帮助:
python manage.py parameter -?
尝试在 "Edit Configurations" 中配置此 python 运行ning 配置。之后,运行 处于调试模式。
如果您正在使用应用程序工厂模式(即使用 creat_app() 而不使用 run.app() main),您可以使用标准的 'flask' 运行 配置模板(社区版本可能没有这些,不确定)。但是,您会注意到调试器不会在断点处停止,因为 DEBUG 运行 中的 flask 应用程序是重新加载器,这意味着它 运行s 在不同的线程中并且 Pycharm 无法捕获它。因此,要使其不仅在午餐时中断,而且要调试任何 API 调用,请确保:
- select 调试复选框
- 添加 --no-reload 作为 flask 参数
- 添加 --without-threads 作为 flask 参数
这是我获得全面调试支持的唯一途径:
我输入的打印语句多于代码。快要死了。
如果通过下面调用 flask 开发服务器,我可以使用 PyCharm 调试器
from ersapp import app
if __name__ == '__main__':
app.run(debug=True)
我正在按照 Miguel Grinberg's book and an application manager (flask-script) 中的示例使用。我在我的应用程序目录中调用服务器,如下所示
(env)$ python manage.py runserver
并在 appdirectory/__init__.py
def create_app(config_name):
webapp = Flask(__name__)
...
return webapp
Pycharm 中的调试器会让事情变得更容易,因为那是我工作的地方。
您通过 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 上看到交互式行...
我在阅读 Miguel Grinberg 的书时遇到了同样的问题。为了回答如何为您的项目“配置 PyCharm”这个问题,我提供以下评论。
要留在 PyCharm 以利用其卓越的调试器,请转到“编辑配置”,并确保您在该对话框中位于“配置”选项卡上。在那里,顶部的两个文本框是:
Script: set to path of your manage.py
Script parameters: runserver
顺便说一下,我使用的是 PyCharm 4.5.3,尽管我怀疑至少在我使用过的几个以前的版本中以下内容是正确的。现在 运行 来自PyCharm 调用 runserver 命令:
python manage.py runserver
这会运行 flask 开发服务器,即 app.run()。配置选项卡允许我们指定 运行 特定脚本 manage.py,以及要使用的命令行参数,例如runserver 在这种情况下。在 运行 PyCharm 中的应用程序之后,查看 运行 或 Debug window 中输出的第一行,您将在其他条目中看到:- -file pathto/manage.py runserver.
您可能在脚本参数文本框中指定了 shell 而不是 runserver,在这种情况下您会发现自己在 shell在 运行 PyCharm 中的应用之后。
默认的 Manager(app) 命令是 runserver 和 shell。 db 命令被添加到下面的行中的 manage.py:
manager.add_command('db', MigrateCommand)
在下面添加命令test。注意 @manager.command 装饰器在 def test().
之前要获取所有 Manager(app) 命令的列表,请在命令行中键入:
python manage.py
如果您在本教程的应用程序工厂部分,您应该看到 {test, shell, db, runserver}。要获得有关任何一个命令类型的帮助:
python manage.py parameter -?
尝试在 "Edit Configurations" 中配置此 python 运行ning 配置。之后,运行 处于调试模式。
如果您正在使用应用程序工厂模式(即使用 creat_app() 而不使用 run.app() main),您可以使用标准的 'flask' 运行 配置模板(社区版本可能没有这些,不确定)。但是,您会注意到调试器不会在断点处停止,因为 DEBUG 运行 中的 flask 应用程序是重新加载器,这意味着它 运行s 在不同的线程中并且 Pycharm 无法捕获它。因此,要使其不仅在午餐时中断,而且要调试任何 API 调用,请确保:
- select 调试复选框
- 添加 --no-reload 作为 flask 参数
- 添加 --without-threads 作为 flask 参数
这是我获得全面调试支持的唯一途径: