Skip to content

🐍 Использование сторонних Python пакетов

Если ваш модуль полагается на внешние библиотеки Python, которые не входят в стандартную библиотеку или зависимость от основного бота, вы должны объявить их, чтобы они были установлены при загрузке модуля.

Объявление зависимостей (requirements.txt)

  1. Создайте файл с именем requirements.txt в корневом каталоге вашего модуля.
  2. Перечислите необходимые пакеты в этом файле, по одному пакету в строке, следуя стандартному формату файла требований pip. При необходимости вы можете указать версии.

Автоматическое управление зависимостями

Менеджер модулей ModuleManager (используемый ModuleLoader) автоматически управляет зависимостями:

  1. Установка/обновление: Когда модуль загружается (load_module) или обновляется (update_from_git), если существует файл requirements.txt и включены обновления зависимостей (config.update_deps_at_load), менеджер запускает pip install -U -r requirements.txt. При этом устанавливаются или обновляются перечисленные пакеты и их зависимости.
  2. Удаление: Когда модуль удаляется (uninstall_module), менеджер пытается удалить пакеты, перечисленные в его requirements.txt.
  3. Общие зависимости: Очень важно, что процесс деинсталляции разработан таким образом, чтобы быть безопасным для общих зависимостей. Пакет удаляется только в том случае, если ни один другой загруженный модуль не указал его в своем requirements.txt. Это предотвращает удаление пакета, который все еще нужен другому модулю. Функции uninstall_module и uninstall_mod_deps требуют текущую карту зависимостей (loader.get_modules_deps()) для выполнения этой проверки.

Эта система гарантирует, что ваш модуль имеет необходимые библиотеки, не вмешиваясь в работу других модулей и не требуя от пользователя ручных команд pip после установки вашего модуля.