程序员

vscode debug flask

2018-01-13  本文已影响945人  _青菜_

一、前言

之前开发一直用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的时间了。

上一篇下一篇

猜你喜欢

热点阅读