#!/usr/bin/env python3 """ Скрипт для очистки неиспользуемых зависимостей Убирает лишние пакеты и оставляет только необходимые для работы """ import subprocess import sys from pathlib import Path def run_command(cmd, check=True): """Выполняет команду и возвращает результат""" try: result = subprocess.run(cmd, shell=True, capture_output=True, text=True, check=check) return result.stdout.strip() except subprocess.CalledProcessError as e: print(f"❌ Ошибка выполнения команды: {e}") return None def get_installed_packages(): """Получает список установленных пакетов""" return run_command("uv pip list") def uninstall_package(package): """Удаляет пакет""" print(f"🗑️ Удаляю {package}...") return run_command(f"uv pip uninstall {package} -y", check=False) def main(): print("🧹 Очистка неиспользуемых зависимостей") print("=" * 50) # Пакеты которые можно безопасно удалить packages_to_remove = [ # Google packages (если не используете аналитику) "google-analytics-data", "google-api-core", "google-auth", "googleapis-common-protos", # gRPC (если не используете) "grpcio", "grpcio-status", # Лишние type stubs "types-authlib", "types-cffi", "types-cryptography", "types-orjson", "types-pyopenssl", "types-python-dateutil", "types-pyyaml", "types-requests", "types-setuptools", # Дополнительные ML пакеты (если не нужны) "scipy", "scikit-learn", # Pillow (если не обрабатываете изображения) "pillow", # TQDM (если не нужны progress bars) "tqdm", ] print("📦 Пакеты для удаления:") for pkg in packages_to_remove: print(f" - {pkg}") response = input("\n❓ Продолжить удаление? (y/N): ") if response.lower() != 'y': print("❌ Отменено") return print("\n🚀 Начинаю удаление...") for package in packages_to_remove: uninstall_package(package) print("\n✅ Очистка завершена!") print("\n📋 Рекомендации:") print("1. Проверьте что приложение работает: uv run python main.py") print("2. Если что-то сломалось, восстановите: uv pip install -r requirements.txt") print("3. Для минимальной установки используйте: uv pip install -r requirements.minimal.txt") if __name__ == "__main__": main()