0

我正在尝试设置一个预提交挂钩。为此,我创建了一个.pre-commit-config.yaml这样的:

repos:
-   repo: https://github.com/ambv/black
    rev: 19.10b0
    hooks:
    - id: black
      language_version: python3.7
-   repo: https://gitlab.com/pycqa/flake8
    rev: 3.7.9
    hooks:
    - id: flake8

然后,在我的 conda 环境中,我运行pre-commit install,它运行时没有任何错误。但是,当我现在提交时,我得到了

$ git commit -m "Format code using black + add hooks"
Traceback (most recent call last):
  File "c:\users\mathis\anaconda3\envs\pvinspect36\lib\runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "c:\users\mathis\anaconda3\envs\pvinspect36\lib\runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "c:\users\mathis\anaconda3\envs\pvinspect36\lib\site-packages\pre_commit\__main__.py", line 1, in <module>
    from pre_commit.main import main
  File "c:\users\mathis\anaconda3\envs\pvinspect36\lib\site-packages\pre_commit\main.py", line 13, in <module>
    from pre_commit.commands.autoupdate import autoupdate
  File "c:\users\mathis\anaconda3\envs\pvinspect36\lib\site-packages\pre_commit\commands\autoupdate.py", line 14, in <module>
    from pre_commit.clientlib import InvalidManifestError
  File "c:\users\mathis\anaconda3\envs\pvinspect36\lib\site-packages\pre_commit\clientlib.py", line 15, in <module>
    from pre_commit.error_handler import FatalError
  File "c:\users\mathis\anaconda3\envs\pvinspect36\lib\site-packages\pre_commit\error_handler.py", line 10, in <module>
    from pre_commit.store import Store
  File "c:\users\mathis\anaconda3\envs\pvinspect36\lib\site-packages\pre_commit\store.py", line 4, in <module>
    import sqlite3
  File "c:\users\mathis\anaconda3\envs\pvinspect36\lib\sqlite3\__init__.py", line 23, in <module>
    from sqlite3.dbapi2 import *
  File "c:\users\mathis\anaconda3\envs\pvinspect36\lib\sqlite3\dbapi2.py", line 27, in <module>
    from _sqlite3 import *
ImportError: DLL load failed: Das angegebene Modul wurde nicht gefunden.

不幸的是,我无法从 shell 重现此错误,因为在那里我可以sqlite3无缝导入(使用相同的 conda env)。有什么想法可以解决这个问题吗?

4

1 回答 1

0

这是 Windows 上 conda 的一个已知问题——我建议使用官方 python.org pythons

conda 对其链接的 DLL 做了一些有趣的事情,这些 DLL 在运行时需要特殊的环境变量——您可以通过确保在使用预提交时始终激活您的 conda 环境来解决问题

你可以在这里找到更多信息:https ://github.com/conda-forge/pre-commit-feedstock/issues/9


免责声明,我是 pre-commit 的作者

于 2020-03-25T16:14:16.660 回答