pre-commit устанавливает изолированные среды для каждого из инструментов, чтобы они не мешали локальной разработке. Похоже, вам не хватает зависимостей в этой среде
Выполнение pip install
внутри сред кеширования очень не поддерживается, и вы, вероятно, нарушите предварительную фиксацию, сделав это. Они преднамеренно являются частными деталями реализации, поэтому вы не можете с ними связываться!
У вас есть два основных варианта:
заставить ваши скрипты работать изолированно (поддерживаемый способ)
настройте свои инструменты так, чтобы они правильно указывали свои зависимости (вы не показали свою конфигурацию, но я предполагаю, что вы вызываете какой-то скрипт?)
для устанавливаемых репозиториев зависимости вашего инструмента должны быть указаны в ваших метаданных установки (обычно setup.py
/ setup.cfg
/ pyproject.toml
)
Например, pre-commit/pre-commit-hooks
указывает / а>:
# setup.cfg
install_requires =
ruamel.yaml>=0.15
toml
для local
репозиториев с language: python
вы должны указать свои зависимости в additional_dependencies
- например:
- repo: local
hooks:
- id: run-the-thing
name: run the thing
entry: ./scripts/lint
additional_dependencies: [six, ...]
language: python
types: [python]
локальные хуки репозитория (аварийный люк)
с language: system
/ language: script
предварительная фиксация не подготавливает среду. Каждый пользователь несет ответственность за создание такой среды. это выход из обычного пути, потому что они как бы побеждают цель фреймворка в первую очередь (которая заключается в предоставлении необходимых инструментов самостоятельно - без необходимости каждого разработчика тщательно управлять кучей инструментов)
Для repo: local
вы должны использовать language: system
и просто надеяться, что ваш скрипт выдаст полезное сообщение об ошибке. если среда пользователя неправильно настроена
- repo: local
hooks:
- id: run-the-thing
name: run the thing
entry: ./scripts/lint
language: system
types: [python]
отказ от ответственности: я создал предварительную фиксацию
person
Anthony Sottile
schedule
12.02.2021