使用预提交时在 VSCode 版本控制中访问 python 解释器

问题描述 投票:0回答:3

我的大多数 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

python visual-studio-code pre-commit-hook pre-commit pre-commit.com
3个回答
5
投票

你在这里基本上有两个选择——都不是很好(

language: system
有点不受支持的逃生舱口,所以你可以在
PATH
上提供这些东西)

您可以使用 virtualenv 的特定路径

entry: venv/bin/pylint
——尽管这会降低可移植性。

或者你可以在激活 virtualenv 的情况下启动 vscode(通常

code .
)——如果 vscode 已经在运行,这并不总是有效


免责声明:我创建了预提交


1
投票

我找到了一个很好的解决方案。使用诗歌!

当您使用

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 中就像魅力一样!


0
投票

作为@Mehdi,我使用 pdm 而不是诗歌并完成了这项工作! 确保不要推送 .pdm-python,它包含 venv python 解释器到您的存储库的路径

如果有任何有关配置 vscode 源代码控制以指向 venv python 解释器而不是 python 系统而不使用包管理工具的更新,我会接受!!!

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.