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