You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

在CentOS 7环境下使用Vim的nvie/vim-flake8插件时,如何指定flake8配置文件及解决忽略规则相关问题?

关于flake8配置与vim-flake8插件的问题

系统信息

$ cat /etc/centos-release
CentOS Linux release 7.6.1810 (Core)
$ flake8 --version
4.0.1 (mccabe: 0.6.1, pycodestyle: 2.8.0, pyflakes: 2.4.0) CPython 3.7.1 on Linux

背景与问题场景

我在Vim中使用flake8进行Python代码语法检查,已通过Vundle安装nvie/vim-flake8插件,且因无标准路径权限,将flake8安装至本地目录:

pip install --target=/home/user/python/local-packages flake8

当前插件可正常运行,打开Python文件后能显示错误列表,但我希望忽略部分错误(等效于使用flake8的--extend-ignore参数),却遇到了问题:

  1. 尝试在vimrc中配置let g:flake8_ignore="W391"时,收到报错提示g:flake8_ignore已被废弃,需使用flake8配置文件。
  2. 按照flake8文档,在本地flake8安装目录(/home/user/python/local-packages/flake8)创建tox.ini并配置[flake8] ignore = W391,但直接执行flake8 getsmemvalues.py时仍会报W391错误,说明配置未被加载;仅当通过--config参数指定该文件时,W391才被忽略,但此时会出现之前未提示的E226错误,推测默认存在其他配置文件,但无法找到其路径。
  3. 使用--append-config参数指定自定义配置文件时,仍会出现E226错误,说明自定义配置中的ignore会覆盖默认配置的忽略规则。

具体疑问

  1. 如何查找flake8默认配置文件的路径?是否有命令可查看其加载的所有配置文件?
  2. 如何让Vim的nvie/vim-flake8插件使用非默认的flake8配置文件(等效于使用--config参数)?尝试配置let g:flake8_config="/home/user/python/local-packages/flake8/tox.ini"未生效,且插件文档建议使用~/.config/flake8配置文件也无效。
  3. 是否可在配置文件中追加忽略规则,而非覆盖默认的忽略列表?

解决方案

1. 查找flake8加载的所有配置文件

想要搞清楚flake8到底加载了哪些配置文件,直接运行这条命令就能一目了然:

flake8 --show-config

它会输出所有被加载的配置文件路径(包括系统级、用户级、当前项目目录的配置),还会标注每个配置项的来源。另外,flake8默认的配置查找顺序是:从当前目录往上遍历,优先读取tox.inisetup.cfg.flake8这类文件,之后是用户目录下的~/.config/flake8,最后才是系统级配置。你之前把配置放在flake8安装目录里,不在默认查找路径中,所以自然不会被加载。

2. 让vim-flake8插件使用指定配置文件

首先,因为你是把flake8安装在本地目录,得先确保Vim能找到这个本地的flake8可执行文件。在你的vimrc里添加这一行:

let g:flake8_executable = '/home/user/python/local-packages/bin/flake8'

如果本地安装目录没有bin/flake8,可以直接指向flake8的脚本路径,比如/home/user/python/local-packages/flake8/__main__.py;更推荐的方式是安装时加上--user参数,这样flake8会自动放到用户目录的bin下,后续调用更省心。

然后把配置文件放在默认能被找到的位置,比如创建~/.config/flake8文件,内容写:

[flake8]
extend-ignore = W391

接着在vimrc里指定配置路径:

let g:flake8_config = '~/.config/flake8'

配置完后重启Vim,或者执行:source ~/.vimrc重新加载配置,插件就能读取到这个配置了。之前你把配置放在flake8安装目录,不在默认查找路径,所以插件无法识别。

3. 追加忽略规则而非覆盖

你之前用ignore = W391会直接覆盖默认的忽略列表,所以才会出现之前没见过的E226错误。想要在默认规则基础上追加忽略项,应该用extend-ignore参数,配置文件写法如下:

[flake8]
extend-ignore = W391

这样flake8会保留原有的默认忽略规则,同时加上你指定的W391,就不会出现额外的错误提示了。

内容的提问来源于stack exchange,提问作者Shaggy1

火山引擎 最新活动