vscode做python代码风格检查

因为需要做后台开发,使用了django,而MSVC2017似乎删除了python tools,所以切换到了vscode编辑器,这样就需要在vscode中添加python和django的支持

首先当然是安装python,我用的是WSL虚拟环境套装,为了支持pylint功能,需要安装pylint包,为了让pylint支持django,还需要安装pylint-django

pip install pylint pylint-django

接下来自然是安装vscode,我用的是user版

再接下来是安装官方的python插件和第三方的django插件

在vscode界面的左侧点击插件管理,然后搜索python第一个就是官方python插件,现在支持python3了

类似的搜索django插件,然后安装

然后要安装python静态类型检查工具,python官方出的是type hints,以及第三方出的mypy

我尝试了一下mypy,结果速度奇慢,所以我屏蔽了mypy,在vscode中检索mypy,然后把enable勾选去掉

类型检验的话,我会用pylance插件,安装后免配置

然后要在vscode中指定python的可执行文件路径,由于python支持virtualenv,所以如果需要再不同的项目中使用不同的virtualenv的话,那么就需要在vscode配置时选择工作区,而不是用户

vscode在发现import的python包不存在时,会调用python包安装命令,自己去下载安装。

在vscode的设置中查找pylint,然后启用它

pylint只能用于检查代码是否符合规范,但是不会自动处理,为了对代码进行formatting,还需要在vscode配置中查找python.formatting,然后首先选取provider,我用的是yapf

pip install -g yapf

在命令行中

yapf --style-help > .style.yapf

就会生成yapf样式的配置文件。如果运行

yapf --help

就可以看得更清楚。里面在style段中这样描述

specify formatting style: either a style name (for example "pep8" or "google"), or the name of a file with style settings. The default is pep8 unless a .style.yapf or setup.cfg or pyproject.toml file located in the same directory as the source or one of its parent directories (for stdin, the current directory is used).

就是说在目录下默认的样式文件名是.style.yapf或者setup.cfg或者pyproject.toml这么3个文件名中的一个。注意红色的标记,文件名的开头是点。考虑到setup.cfg文件可能会和其他的工具、项目冲突,所以我一般会选择.style.yapf

这个文件内部其实是ini格式的,所以在vscode中选择ini格式高亮可以很容易阅读。

我一般会调整column_limit就是一行最多多少个字符,超出这个就要换行,默认是79个字符,这是针对命令行界面的,对于图形界面,一般100个肯定是装下了。这里倒不必特别纠结,毕竟大家能看代码不费劲就可以了。

在这篇文章中

在vscode中使用yapf,并手动修改yapf的配置_percy_ling的博客-CSDN博客_vscode yapf

提到只要添加一个参数就可以了,但是经过我的实践检验,这样yapf不工作,代码不会被自动格式化

最后在这里

Mypy:Python静态类型 - 简书

发现了一个解决方法,经过实践检验,确实可行

最后在项目目录形成.vscode/settings.json,注意vscode前边有个点,这是一个linux下的隐藏目录

{
    "editor.formatOnSave": true,
    "python.formatting.provider": "yapf",
    "python.linting.pylintEnabled": true,
    "python.linting.enabled": true,
    "python.linting.pylintArgs": [
        "--load-plugins",
        "pylint_django",
        "--load-plugins",
        "pylint_django.checkers.migrations",
        "--django-settings-module=.settings"
    ]
}

在这里

VScode python pylint 报错(2019)解决及绿波浪线去除_Sticzhai的博客-CSDN博客_pylint报错

有一些配置选项,经过实践检验确实不错。不过原作者是在.vscode/settings.json里面写的,而我要把各个选项对应到.pylintrc文件的对应项中。方法很简单,进入WSL的bash,在项目的目录运行

pylint --generate-rcfile  > .pylintrc

就可以生成.pylintrc文件,注意这个文件名是以点开头的。

把--load-plugins对应到.pylintrc的load-plugins选项,然后--disable对应到.pylintrc的disable选项,如果要加入多个,就用逗号分隔。再把django-settings-module=.settings也写进去,注意把替换成你自己的项目名,使用时pylint会通过这个选项去读取目录下的settings.py文件,这里面还有Django的一些设置。

如果要开发django,那么load-plugins必须要加入pylint-django,否则会平白多出很多错误。

如果仅仅载入pylint_django插件,那么还是会报错

Django was not configured. For more information runpylint --load-plugins=pylint_django --help-msg=django-not-configuredpylint(django-not-configured)

另外

https://stackoverflow.com/questions/65761250/pylint-django-raising-error-about-django-not-being-configured-when-thats-not-th

中还介绍了一些其他参数,对于Django开发而言还有点额外的设置。不过我没有用,因为我认为pylint的提醒是重要的,应该采纳它的提醒。比如imported-auth-user,因为Django可以在settings.py中自定义登录用户表,所以在Django程序中直接采用

from django.contrib.auth.models import User

的方式来导入User模型可能会错,所以pylint建议采用

from django.contrib.auth import get_user_model
User = get_user_model()

的方式来获取User模型。这个建议很好,所以我不会关闭pylint的imported-auth-user选项。

你可能感兴趣的:(django,vscode,vscode)