diff --git a/cleanup_deps.py b/cleanup_deps.py new file mode 100644 index 00000000..94955fa7 --- /dev/null +++ b/cleanup_deps.py @@ -0,0 +1,88 @@ +#!/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() diff --git a/pyproject.toml b/pyproject.toml index 8bab0c6a..5fd9fd36 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -31,7 +31,11 @@ dependencies = [ "httpx", "redis[hiredis]", "sentry-sdk[starlette,sqlalchemy]", - "sentence-transformers", + # ML packages (CPU-only для предотвращения CUDA) + "torch>=2.0.0", + "sentence-transformers>=2.2.0", + "transformers>=4.56.0", + "scikit-learn>=1.7.0", "starlette", "gql", "ariadne", diff --git a/requirements.txt b/requirements.txt index 171b5727..15389848 100644 --- a/requirements.txt +++ b/requirements.txt @@ -17,7 +17,10 @@ orjson>=3.9.0 pydantic>=2.0.0 numpy>=1.24.0 muvera>=0.2.0 +torch>=2.0.0 sentence-transformers>=2.2.0 +transformers>=4.56.0 +scikit-learn>=1.7.0 # Type stubs types-requests>=2.31.0 diff --git a/uv.lock b/uv.lock index 192e5476..86a53e63 100644 --- a/uv.lock +++ b/uv.lock @@ -418,10 +418,13 @@ dependencies = [ { name = "pydantic" }, { name = "pyjwt" }, { name = "redis", extra = ["hiredis"] }, + { name = "scikit-learn" }, { name = "sentence-transformers" }, { name = "sentry-sdk", extra = ["sqlalchemy", "starlette"] }, { name = "sqlalchemy" }, { name = "starlette" }, + { name = "torch" }, + { name = "transformers" }, { name = "types-authlib" }, { name = "types-orjson" }, { name = "types-pyjwt" }, @@ -471,10 +474,13 @@ requires-dist = [ { name = "pydantic" }, { name = "pyjwt", specifier = ">=2.10" }, { name = "redis", extras = ["hiredis"] }, - { name = "sentence-transformers" }, + { name = "scikit-learn", specifier = ">=1.7.0" }, + { name = "sentence-transformers", specifier = ">=2.2.0" }, { name = "sentry-sdk", extras = ["starlette", "sqlalchemy"] }, { name = "sqlalchemy", specifier = ">=2.0.0" }, { name = "starlette" }, + { name = "torch", specifier = ">=2.0.0" }, + { name = "transformers", specifier = ">=4.56.0" }, { name = "types-authlib" }, { name = "types-orjson" }, { name = "types-pyjwt" },