Скрипт для комплексной проверки импортов в Python файлах проекта.
system/connectors → library/connectors)python3 system/scripts/audit_imports.py
По умолчанию проверяются следующие директории:
- library/ - Переиспользуемые компоненты платформы
- system/ - Ядро платформы
- infra/ - Инфраструктурные сервисы
- projects/ - Бизнес-проекты
================================================================================
АУДИТ ИМПОРТОВ PYTHON
================================================================================
📂 Найдено файлов: 719
📍 Области: library, system, infra, projects
СВОДКА:
--------------------------------------------------------------------------------
Проверено файлов: 719
Файлов с ошибками: 539
❌ Ошибки импортов: 1704
⚠️ Неиспользуемые: 1154
🔄 Устаревшие пути: 0
⛓️ Циклические зависим: 0
🔴 Синтаксические ошибки: 0
❌ МОДУЛИ НЕ НАЙДЕНЫ:
--------------------------------------------------------------------------------
infra/@messenger.service/run.py:28 - src.bot_service
infra/@messenger.service/run.py:29 - src.webhook_server
...
⚠️ НЕИСПОЛЬЗУЕМЫЕ ИМПОРТЫ (первые 30):
--------------------------------------------------------------------------------
infra/@mail.service/check_mail.py:12 - datetime.datetime
infra/@md-viewer.service/app.py:11 - pathlib.Path
...
Скрипт создаёт детальный CSV отчёт: system/scripts/audit_imports_report.csv
Формат:
TYPE,FILE,LINE,MODULE,DETAILS
ERROR_MODULE_NOT_FOUND,infra/@messenger.service/run.py,28,src.bot_service,Module 'src.bot_service' not found
WARNING_UNUSED,infra/@mail.service/check_mail.py,12,datetime.datetime,Unused import 'datetime.datetime'
WARNING_DEPRECATED,projects/pirotehnika/file.py,5,system.connectors.ozon,Update to: library.connectors.api.ozon
Скрипт знает о Python 3 встроенных модулях и популярных пакетах:
- Весь Python standard library
- numpy, pandas, sqlalchemy, fastapi, flask, django
- pytorch, tensorflow, transformers, scikit-learn
- И более 200 других популярных пакетов
Модуль не найден в проекте и не в списке встроенных модулей.
Возможные причины:
- Пакет не установлен
- Опечатка в имени модуля
- Относительный импорт в неправильном контексте
- Внешний пакет не в requirements.txt
Решение:
pip install package_name
# или
pip freeze > requirements.txt
Импорт не используется в коде.
Возможные причины:
- Забыли удалить импорт при рефакторинге
- Импорт нужен для re-export (добавить в __all__)
- Импорт используется через косвенные пути
Решение:
# Если импорт нужен для re-export
from module import something
__all__ = ['something']
# Если не нужен - удалить
Используется старый путь импорта.
Пример:
# Старо:
from system.connectors.api.ozon import OzonClient
# Ново:
from library.connectors.api.ozon import OzonClient
python3 system/scripts/audit_imports.py | grep "WARNING_UNUSED"
# Ошибки импортов
grep "ERROR_MODULE_NOT_FOUND" system/scripts/audit_imports_report.csv | wc -l
# Группировка по файлам
cut -d, -f2 system/scripts/audit_imports_report.csv | sort | uniq -c | sort -rn
# Самые проблемные модули
grep "ERROR_MODULE_NOT_FOUND" system/scripts/audit_imports_report.csv | \
cut -d, -f4 | sort | uniq -c | sort -rn | head -20
# Скопировать CSV в Excel
cp system/scripts/audit_imports_report.csv /tmp/audit_imports.csv
# Открыть в LibreOffice Calc или Excel
Скрипт проверяет наличие модуля в следующем порядке:
1. Встроенные модули Python
2. Популярные пакеты (numpy, pandas, etc.)
3. Директории library/, system/, infra/
4. Директории в projects/
Используется AST (Abstract Syntax Tree) для анализа:
- Прямых ссылок на импортированные имена
- Использования через точку (module.function)
- Игнорируются подчёркивания (_) и all
__import__(), importlib.import_module()Планируемые улучшения:
- [ ] Поддержка динамических импортов
- [ ] Анализ requirements.txt и pyproject.toml
- [ ] Генерация графов зависимостей
- [ ] Автоматическое исправление устаревших путей
- [ ] Интеграция с pre-commit hooks
- [ ] Анализ производительности импортов
Скрипт является частью системы аудита платформы.
Вопросы и предложения в system/CLAUDE.md.