🐍 Использование сторонних 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 после установки вашего модуля.