我的大多数 Python 项目都使用预提交,并且在其中许多项目中,我需要使用 pylint 作为本地存储库。当我想要提交时,我总是必须激活 python venv 然后提交;否则,我会收到以下错误:
black....................................................................Passed
pylint...................................................................Failed
- hook id: pylint
- exit code: 1
Executable `pylint` not found
当我使用vscode版本控制提交时,出现同样的错误;我搜索了这个问题,但没有找到任何解决方案来避免 VSCode 中的错误。
这是我的典型
.pre-commit-config.yaml
:
repos:
- repo: https://github.com/ambv/black
rev: 21.9b0
hooks:
- id: black
language_version: python3.8
exclude: admin_web/urls\.py
- repo: local
hooks:
- id: pylint
name: pylint
entry: pylint
language: python
types: [python]
args:
- --rcfile=.pylintrc
你在这里基本上有两个选择——都不是很好(
language: system
有点不受支持的逃生舱口,所以你可以在PATH
上提供这些东西)
您可以使用 virtualenv 的特定路径
entry: venv/bin/pylint
——尽管这会降低可移植性。
或者你可以在激活 virtualenv 的情况下启动 vscode(通常
code .
)——如果 vscode 已经在运行,这并不总是有效
免责声明:我创建了预提交
我找到了一个很好的解决方案。使用诗歌!
当您使用
poetry
时,您可以通过使用poetry run command
轻松访问您的环境。这就是访问本地的技巧pylint
。
这是一个使用
poetry
的示例;除了语言和输入之外,一切都相同:
repos:
- repo: https://github.com/ambv/black
rev: 21.9b0
hooks:
- id: black
language_version: python3.8
exclude: admin_web/urls\.py
- repo: local
hooks:
- id: pylint
name: pylint
entry: poetry run pylint # was pylint before
language: system # was python before
types: [python]
args:
- --rcfile=.pylintrc
并且在 VScode 中就像魅力一样!
作为@Mehdi,我使用 pdm 而不是诗歌并完成了这项工作! 确保不要推送 .pdm-python,它包含 venv python 解释器到您的存储库的路径
如果有任何有关配置 vscode 源代码控制以指向 venv python 解释器而不是 python 系统而不使用包管理工具的更新,我会接受!!!