-
-
Notifications
You must be signed in to change notification settings - Fork 7
Description
Issue:
Pre-commit stores the python executable used for pre-commit install in the generated git hooks. However, a python installed by conda can only be reliably executed when the respective environment is activated (Especially when using Windows). Thus, when using pre-commit installed by this conda-forge package, the respective environment needs to be activated whenever git commit is called. However, when using a git front-end from an IDE that supports the choice between different conda installed python environments, git will not be called with the correct environment activated.
Pre-commit hook:
$ cat .git/hooks/pre-commit
#!/usr/bin/env python
# File generated by pre-commit: https://pre-commit.com
...
# start templated
INSTALL_PYTHON = 'D:\\Programs\\Miniconda3\\envs\\pre-commit\\python.exe'
...Resulting problem reproduced in Windows cmd (activate environment pre-commit; pre-commit install; git commit -> OK; deactivate environment; git commit -> FAIL):
D:\my\code\try_pre_commit>D:\Programs\Miniconda3\condabin\activate pre-commit
D:\my\code\try_pre_commit>conda.bat activate pre-commit
(pre-commit) D:\my\code\try_pre_commit>pre-commit install
pre-commit installed at .git\hooks\pre-commit
(pre-commit) D:\my\code\try_pre_commit>git commit
black-conda..........................................(no files to check)Skipped
On branch master
nothing to commit, working tree clean
(pre-commit) D:\my\code\try_pre_commit>D:\Programs\Miniconda3\condabin\deactivate
DeprecationWarning: 'deactivate' is deprecated. Use 'conda deactivate'.
(pre-commit) D:\my\code\try_pre_commit>conda.bat deactivate
D:\my\code\try_pre_commit>git commit
Traceback (most recent call last):
File "D:\Programs\Miniconda3\envs\pre-commit\lib\runpy.py", line 193, in _run_module_as_main
return _run_code(code, main_globals, None,
File "D:\Programs\Miniconda3\envs\pre-commit\lib\runpy.py", line 86, in _run_code
exec(code, run_globals)
File "D:\Programs\Miniconda3\envs\pre-commit\lib\site-packages\pre_commit\__main__.py", line 1, in <module>
from pre_commit.main import main
File "D:\Programs\Miniconda3\envs\pre-commit\lib\site-packages\pre_commit\main.py", line 13, in <module>
from pre_commit.commands.autoupdate import autoupdate
File "D:\Programs\Miniconda3\envs\pre-commit\lib\site-packages\pre_commit\commands\autoupdate.py", line 17, in <module>
from pre_commit.clientlib import InvalidManifestError
File "D:\Programs\Miniconda3\envs\pre-commit\lib\site-packages\pre_commit\clientlib.py", line 16, in <module>
from pre_commit.error_handler import FatalError
File "D:\Programs\Miniconda3\envs\pre-commit\lib\site-packages\pre_commit\error_handler.py", line 10, in <module>
from pre_commit.store import Store
File "D:\Programs\Miniconda3\envs\pre-commit\lib\site-packages\pre_commit\store.py", line 4, in <module>
import sqlite3
File "D:\Programs\Miniconda3\envs\pre-commit\lib\sqlite3\__init__.py", line 23, in <module>
from sqlite3.dbapi2 import *
File "D:\Programs\Miniconda3\envs\pre-commit\lib\sqlite3\dbapi2.py", line 27, in <module>
from _sqlite3 import *
ImportError: DLL load failed while importing _sqlite3: The specified module could not be found.
Environment (
conda list):
# packages in environment at D:\Programs\Miniconda3\envs\pre-commit:
#
# Name Version Build Channel
aspy.yaml 1.3.0 py_0 conda-forge
ca-certificates 2019.11.28 hecc5488_0 conda-forge
certifi 2019.11.28 py38_0 conda-forge
cfgv 2.0.1 py_0 conda-forge
editdistance 0.5.3 py38h6538335_0 conda-forge
identify 1.4.11 py_0 conda-forge
nodeenv 1.3.4 py_0 conda-forge
openssl 1.1.1d hfa6e2cd_0 conda-forge
pip 20.0.2 py38_0 conda-forge
pre-commit 2.0.0 py38_0 conda-forge
python 3.8.1 he1f5543_2 conda-forge
pyyaml 5.3 py38hfa6e2cd_0 conda-forge
setuptools 45.1.0 py38_0 conda-forge
six 1.14.0 py38_0 conda-forge
sqlite 3.30.1 hfa6e2cd_0 conda-forge
toml 0.10.0 py_0 conda-forge
vc 14.1 h0510ff6_4
virtualenv 16.7.5 py_0 conda-forge
vs2015_runtime 14.16.27012 hf0eaf9b_1
wheel 0.34.1 py38_0 conda-forge
wincertstore 0.2 py38_1003 conda-forge
yaml 0.2.2 hfa6e2cd_1 conda-forge
Details about
conda and system ( conda info ):
active environment : pre-commit
active env location : D:\Programs\Miniconda3\envs\pre-commit
shell level : 1
user config file : C:\Users\me\.condarc
populated config files :
conda version : 4.7.12
conda-build version : not installed
python version : 3.7.4.final.0
virtual packages :
base environment : D:\Programs\Miniconda3 (writable)
channel URLs : https://repo.anaconda.com/pkgs/main/win-64
https://repo.anaconda.com/pkgs/main/noarch
https://repo.anaconda.com/pkgs/r/win-64
https://repo.anaconda.com/pkgs/r/noarch
https://repo.anaconda.com/pkgs/msys2/win-64
https://repo.anaconda.com/pkgs/msys2/noarch
package cache : D:\Programs\Miniconda3\pkgs
C:\Users\me\.conda\pkgs
C:\Users\me\AppData\Local\conda\conda\pkgs
envs directories : D:\Programs\Miniconda3\envs
C:\Users\me\.conda\envs
C:\Users\me\AppData\Local\conda\conda\envs
platform : win-64
user-agent : conda/4.7.12 requests/2.22.0 CPython/3.7.4 Windows/10 Windows/10.0.18362
administrator : False
netrc file : None
offline mode : False