Pylint 在 visual studio 代码中不起作用

Pylint does not work in visual studio code

我在 Mac 上使用 Visual Studio 代码作为 python IDE,一切正常。但是几周前我开始使用 Windows。突然间我无法在我开始的项目中使用 pylint Mac。

我有

使用完全相同的参数,在 Linux (Ubuntu 16.10) 和 Mac 上一切正常。并且不适用于两台 Windows 机器。看来pylint只是没有运行.

我哪里错了?

更新:

我发现 pylint 出现 UnicodeDecodingError:

##########Linting Output - pylint##########

Traceback (most recent call last):
  File "C:\Program Files\Anaconda3\Scripts\pylint-script.py", line 5, in <module>
    sys.exit(pylint.run_pylint())
  File "C:\Program Files\Anaconda3\lib\site-packages\pylint\__init__.py", line 13, in run_pylint
    Run(sys.argv[1:])
  File "C:\Program Files\Anaconda3\lib\site-packages\pylint\lint.py", line 1264, in __init__
    linter.read_config_file()
  File "C:\Program Files\Anaconda3\lib\site-packages\pylint\config.py", line 627, in read_config_file
    parser.readfp(fp)
  File "C:\Program Files\Anaconda3\lib\configparser.py", line 760, in readfp
    self.read_file(fp, source=filename)
  File "C:\Program Files\Anaconda3\lib\configparser.py", line 715, in read_file
    self._read(f, source)
  File "C:\Program Files\Anaconda3\lib\configparser.py", line 1012, in _read
    for lineno, line in enumerate(fp, start=1):
  File "C:\Program Files\Anaconda3\lib\codecs.py", line 321, in decode
    (result, consumed) = self._buffer_decode(data, self.errors, final)
  File "C:\Program Files\Anaconda3\lib\encodings\utf_8_sig.py", line 69, in _buffer_decode
    return codecs.utf_8_decode(input, errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte

更新 2

我在使用自动生成的 pylintrc 文件时遇到此错误。没有这个文件,一切正常(除了我不能静音一些通知,使用 pylint_flask 插件并进行初始挂钩)。

更新 3:正确的解决方案(感谢 Elijah W. Gagne 的评论) 这很好用:

pylint --generate-rcfile | out-file -encoding utf8 .pylintrc

到目前为止,我已经通过使用来自 mac 的 pylintrc 文件的副本解决了这个问题。 据我所知,问题来自 Windows Powershell。 当我这样做时

pylint --generate-rcfile > pylintrc

它创建一个具有 cp-1251 编码的文件。

解决方案是复制数据并将其粘贴到 IDE/text 编辑器中以将其另存为 utf-8 文件。或者干脆(像我一样)从另一个系统或网络上复制它。

我在 Windows 中遇到了同样的问题,我通过以下方式获得了 pylintrc 文件:

pylint --generate-rcfile > ~/.pylintrc

虽然我用notepad++打开,但是编码不是utf8,我改成utf8,就可以了

我观察到,至少在我的 pylint 2.4.4VS Code 1.43.0 中,pylint 与它的 ~/.pylintrc 文件编码无关。我尝试了很多编码(不仅是 UTF8-BOM、UTF8-noBOM,还有其他一些编码)- none 导致它失败。

这里讨论的问题,在我的例子中是因为我没有在 ~/.pylintrc 文件 [MASTER] 部分中转义斜线,当定义一个 init_hook 它时。

我有:

[MASTER]

# other statements
...


init-hook="import sys; sys.path.append('C:\Users\<username>\Documents\<project>')"

这导致了与此处讨论的问题完全相同的问题。

一旦我在路径前添加了一个 r 修饰符,就像这样:

[MASTER]

# other statements
...

init-hook="import sys; sys.path.append(r'C:\Users\<username>\Documents\<project>')"

它立即解决了问题。