хук pylint и pre-commit не может импортировать
Структура моего проекта выглядит так:
project/
app/
main.py
venv/
.pylintrc
.pre-commit-config.yaml
Когда я пытаюсь редактировать project/app/main.py
и это терпит неудачу с Unable to import 'psycopg2' (import-error)
Но когда я пытаюсь напрямую использовать этот файл, он работает.
.pre-commit-config.yaml
выглядит так:
- repo: https://github.com/PyCQA/pylint
rev: pylint-2.4.2
hooks:
- id: pylint
3 ответа
Не уверен, что это сделало его правильным pylint, но в нижней части https://github.com/pre-commit/mirrors-pylint есть отказ от ответственности
pre-commit запускает pylint из изолированного virtualenv. Многие проверки pylint выполняют динамический анализ, который там не дает. Вы можете найти настройку pylint как
local
крючок полезнее.
если у вас очень мало зависимостей, additional_dependencies
может быть достаточно, чтобы заставить его работать, но использование local
крючки для вещей, которые должны (~ по существу) импортировать ваш код, вероятно, ваш лучший выбор
отказ от ответственности: я автор pre-commit
Вы можете отключить ошибку импорта в аргументах pylint. Это не должно конфликтовать с другими типами:
- repo: https://github.com/pycqa/pylint
rev: v2.17.5
hooks:
- id: pylint
args: [src, --disable=import-error]
Один из способов обхода, который я использовал в прошлом, заключался в принудительной предварительной фиксации для установки текущего проекта. Имейте в виду, что, хотя эта работа никоим образом не поддерживается автором предварительной фиксации, на самом деле она активно обескураживается, главным образом потому, что она не позволяет предварительной фиксации использовать неизменяемые кеши.
После создания virtualenv он больше не будет обновляться, а предварительная фиксация не имеет параметров командной строки, чтобы не доверять локальному кешу. Если вы столкнетесь с ошибками, ваш единственный вариант - сбросить весь дисковый кеш перед фиксацией, это, вероятно, означает удаление гигабайт данных из
В идеале инструмент должен иметь возможность аннулировать только среды из текущего проекта, а не весь кеш.
- repo: https://github.com/pre-commit/mirrors-pylint
rev: v3.0.0a3
hooks:
- id: pylint
additional_dependencies:
- . # <-- that makes it install current project
- flaky