Pylint 在 visual studio 代码中不起作用
Pylint does not work in visual studio code
我在 Mac 上使用 Visual Studio 代码作为 python IDE,一切正常。但是几周前我开始使用 Windows。突然间我无法在我开始的项目中使用 pylint Mac。
我有
- 显式激活 pylintEnabled 选项(=True)
- pylint.exe 的完整路径已设置 ("c:\Anaconda 3...")
pylintrc
文件,初始挂钩将项目添加到根目录中的 python 路径(由 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
到目前为止,我已经通过使用来自 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.4
和 VS 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>')"
它立即解决了问题。
我在 Mac 上使用 Visual Studio 代码作为 python IDE,一切正常。但是几周前我开始使用 Windows。突然间我无法在我开始的项目中使用 pylint Mac。
我有
- 显式激活 pylintEnabled 选项(=True)
- pylint.exe 的完整路径已设置 ("c:\Anaconda 3...")
pylintrc
文件,初始挂钩将项目添加到根目录中的 python 路径(由 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
到目前为止,我已经通过使用来自 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.4
和 VS 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>')"
它立即解决了问题。