美文网首页程序员
vscode debug flask

vscode debug flask

作者: _青菜_ | 来源:发表于2018-01-13 10:36 被阅读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的时间了。

    相关文章

      网友评论

        本文标题:vscode debug flask

        本文链接:https://www.haomeiwen.com/subject/duznnxtx.html