使用 PyCharm 进行预提交

keu*_*uj6 11 python git pre-commit pycharm pre-commit.com

我正在尝试从 PyCharm 中的“提交”按钮启动我的预提交挂钩(v.2020.2)。我使用 conda venv (使用 创建conda create -n py38 python=3.8)在其中安装了模块pip install

我的.pre-commit-config.yaml读物是:

repos:
- repo: local
  hooks:
  - id: black
    name: black
    language: system
    entry: black --check
    types: [python]

  - id: isort
    name: isort
    language: system
    entry: isort --check-only
    types: [python]
Run Code Online (Sandbox Code Playgroud)

我在这里使用localrepo 是因为我会将我的代码推送到未连接到互联网的 Intranet 存储库。

pre-commit run --all-files在我的本地计算机上从命令行运行运行良好。但是当我尝试从 PyCharm 提交时(在此输入图像描述),它会引发以下错误:

Traceback (most recent call last):
  File "c:\bib\envs\py38\lib\runpy.py", line 193, in _run_module_as_main
    return _run_code(code, main_globals, None, File "c:\bib\envs\py38\lib\runpy.py", line 86, in _run_code exec(code, run_globals)
  File "c:\bib\envs\py38\lib\site-packages\pre_commit\__main__.py", line 1, in   
    from pre_commit.main import main
  File "c:\bib\envs\py38\lib\site-packages\pre_commit\main.py", line 13, in   
    from pre_commit.commands.autoupdate import autoupdate
  File "c:\bib\envs\py38\lib\site-packages\pre_commit\commands\autoupdate.py", line 14, in   
    from pre_commit.clientlib import InvalidManifestError
  File "c:\bib\envs\py38\lib\site-packages\pre_commit\clientlib.py", line 16, in   
    from pre_commit.error_handler import FatalError
  File "c:\bib\envs\py38\lib\site-packages\pre_commit\error_handler.py", line 10, in   
    from pre_commit.store import Store
  File "c:\bib\envs\py38\lib\site-packages\pre_commit\store.py", line 4, in   
    import sqlite3
  File "c:\bib\envs\py38\lib\sqlite3\__init__.py", line 23, in   
    from sqlite3.dbapi2 import *
  File "c:\bib\envs\py38\lib\sqlite3\dbapi2.py", line 27, in   
    from _sqlite3 import * 
ImportError: DLL load failed while importing _sqlite3: The specified module could not be found.
Run Code Online (Sandbox Code Playgroud)

我认为github上的这个 bug 报告特别重要。pre-commit如果我理解得很好,它暗示 PyCharm 实际上并未加载 venv,因此在此环境中找不到已安装的软件包。但没有提出解决方案。

有人有解决方案吗?