因为需要做后台开发,使用了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/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=<mainapp>.settings"
]
}
有一些配置选项,经过实践检验确实不错。不过原作者是在.vscode/settings.json里面写的,而我要把各个选项对应到.pylintrc文件的对应项中。方法很简单,进入WSL的bash,在项目的目录运行
pylint --generate-rcfile > .pylintrc
就可以生成.pylintrc文件,注意这个文件名是以点开头的。
把--load-plugins对应到.pylintrc的load-plugins选项,然后--disable对应到.pylintrc的disable选项,如果要加入多个,就用逗号分隔。再把django-settings-module=<mainapp>.settings也写进去,注意把<mainapp>替换成你自己的项目名,使用时pylint会通过这个选项去读取<mainapp>目录下的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)
中还介绍了一些其他参数,对于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选项。