一、前言
之前开发一直用Jetbrains旗下的Pycharm,该系列每个IDE产品都很惊艳。在GoLand还没出来的时候,Pycharm可以轻松集成golang环境进行开发,也可以轻松的集成DataGrip数据库管理工具,该工具可以管理所有的关系型数据库。深感Amazing
可是,问题也很明显,每次打开项目都要很久。于是在试用了VS Code之后,果断投奔到它的怀抱了。
编辑器,IDE,IDEA总是有同学搞不清这几个名词。文本编辑器通常是文件编辑为主要功能的软件,代表的有sublime,notepad++等。IDE是集成开发环境,一般包括代码编辑、编译器、调试器和图形用户界面等工具,代表的如Visual Studio,Eclipse,IntelliJ IDEA等。而IDEA是IntelliJ IDEA的简称。
VS Code特点就是轻量而且功能强大。下面就开始介绍一下vsode debug flask配置。
二、干货
工作环境:macos,Python3
vs code官方有给出配置文档,但是更新速度远不及vs code的更新速度,部分配置项vs code已经不兼容。
于是从网上下手,基础配置请先参考https://segmentfault.com/a/1190000008742844。
下面是该文章给出的debug配置:
{
"name": "Python: Flask (0.11.x or later)",
"type": "python",
"request": "launch",
"stopOnEntry": false,
"pythonPath": "${config:python.pythonPath}",
"program": "${workspaceRoot}/env/bin/flask",
"env": {
"FLASK_APP": "${workspaceRoot}/app.py"
},
"args": [
"run",
"--no-debugger",
"--no-reload"
],
"debugOptions": [
"RedirectOutput"
]
},
按照这个配置完成后并不能直接启动,而是出现了
Traceback (most recent call last):
...
RuntimeError: Click will abort further execution because Python 3 was
configured to use ASCII as encoding for the environment. Either switch
to Python 2 or consult http://click.pocoo.org/python3/ for
mitigation steps
解决方案就是全局设置:
export LC_ALL=zh_CN.UTF-8
export LANG=zh_CN.UTF-8
之后重启vscode。确实debug可以了而且flask 本身的debug是否开启对此并无影响,但是更改代码之后不会reload ,而且flask config中设置的监听port并不会生效。
于是,我们还是用python去调试,下面是本人自己尝试的结果:
{
"name": "Python: Flask (customer)",
"type": "python",
"request": "launch",
"stopOnEntry": false,
"pythonPath": "${config:python.pythonPath}",
"program": "${workspaceRoot}/app.py",
"env": {
// "FLASK_APP": "${workspaceRoot}/app.py"
},
"args": [
"run",
"--no-debugger",
"--no-reload"
],
"debugOptions": [
"RedirectOutput"
]
},
能debug,而且编辑了py文件后会自动reload。该配置一定要设置Flsk DEBUG = False算是一点缺陷,但已经能节省很多手动reload的时间了。