Pylint在visual studio代码中不起作用

时间:2017-05-04 12:24:46

标签: python visual-studio-code pylint

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

我有

  • 明确激活pylintEnabled选项(= True)
  • 设置了pylint.exe的完整路径(“c:\ Anaconda 3 ...”)
  • pylintrc文件,初始挂钩将项目添加到根目录中的pythonpath(由pylint使用--generate-rcfile生成)。

使用相同的参数,在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

3 个答案:

答案 0 :(得分:8)

我在Windows中遇到同样的问题,我通过以下方式获取config/app.php文件:

pylintrc

虽然我使用pylint --generate-rcfile > ~/.pylintrc 打开它,但编码不是notepad++,我将其更改为utf8,然后就可以了。

答案 1 :(得分:3)

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

test1

它会创建一个pylint --generate-rcfile > pylintrc 编码的文件。

解决方案是复制数据并将其粘贴到IDE /文本编辑器中,以将其另存为cp-1251文件。或者简单地(就像我一样)从另一个系统或网络上复制它。

答案 2 :(得分:1)

我观察到至少使用pylint 2.4.4VS Code 1.43.0的情况是pylint与其~/.pylintrc文件的编码无关。我尝试了很多编码(不仅是UTF8-BOM,UTF8-noBOM,而且还有其他几种编码),但都没有导致编码失败。

就我而言,这里讨论的问题是由于我在定义~/.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>')"

它立即解决了问题。