Pylint设置与预提交在python 3.5



我试图在我的项目中用pre-commit设置pylint
我得到了这个答案,他们告诉我如何设置我的.pre-commit-config.yaml
当我去答案中提到的仓库时,他们已经写下了

此镜像存储库已弃用,请直接使用pylint。

所以我把我的.pre-commit-config.yaml文件设置成这个

-   repo: https://github.com/pycqa/pylint
rev: pylint-2.4.4
hooks:
-   id: pylint
args:
- --limit=8
- --rcfile=$PROJECT_ROOT/.pylintrc

但现在当我尝试做时

$ pre-commit run

它给出了以下错误:

An unexpected error has occurred: CalledProcessError: command: ('/Users/userabc/.cache/pre-commit/repokxyo7uuq/py_env-default/bin/python', '/Users/userabc/.cache/pre-commit/repokxyo7uuq/py_env-default/bin/pip', 'install', '.')
return code: 1
expected return code: 0
stdout:
Processing /Users/userabc/.cache/pre-commit/repokxyo7uuq
stderr:
ERROR: Command errored out with exit status 1:
command: /Users/userabc/.cache/pre-commit/repokxyo7uuq/py_env-default/bin/python -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/private/var/folders/gm/t0h6v8jx4bqd6cj73_k27myw0000gp/T/pip-req-build-5vjdd9f2/setup.py'"'"'; __file__='"'"'/private/var/folders/gm/t0h6v8jx4bqd6cj73_k27myw0000gp/T/pip-req-build-5vjdd9f2/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'rn'"'"', '"'"'n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /private/var/folders/gm/t0h6v8jx4bqd6cj73_k27myw0000gp/T/pip-req-build-5vjdd9f2/pip-egg-info
cwd: /private/var/folders/gm/t0h6v8jx4bqd6cj73_k27myw0000gp/T/pip-req-build-5vjdd9f2/
Complete output (7 lines):
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/private/var/folders/gm/t0h6v8jx4bqd6cj73_k27myw0000gp/T/pip-req-build-5vjdd9f2/setup.py", line 60, in <module>
long_description = stream.read()
File "/Users/userabc/.pyenv/versions/3.5.2/lib/python3.5/encodings/ascii.py", line 26, in decode
return codecs.ascii_decode(input, self.errors)[0]
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc2 in position 4020: ordinal not in range(128)
----------------------------------------
ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
Check the log at /Users/userabc/.cache/pre-commit/pre-commit.log

我的项目和虚拟环境的python版本是3.5.2
这是pylint还是pre-commit中的错误?还是我做错了什么?

看起来您是在一个设置了损坏/不正确的区域设置的环境中运行的。

通过运行env | grep -E '(LC|LANG)'python3 -m locale搜索您当前的区域设置

如果配置正确,python应该选择UTF-8编码——通常您可以将.bashrc/等设置的任何内容更正为无效的区域设置,也可以自己设置

常见值为:LANG=C.UTF-8LANG=en_US.UTF-8


EDIT:我也在修复这里的pylint

  1. 首先使用以下命令。

    pip install -U setuptools
    

    或者您可以简单地创建新的虚拟环境。

  2. 然后手动运行预提交以确认配置。

    pre-commit run --all-files
    

    然后你可以完成像这样的pylint配置

回购:https://github.com/pycqa/pylint

rev: pylint-2.4.4
hooks:
-   id: pylint
args:
- --max-line-length=80
- --ignore-imports=yes
- -d duplicate-code

最新更新