Подключение дополнительных Python библиотек¶
Возможность самостоятельного подключения дополнительных Python библиотек в AW BI реализована, начиная с версии 1.34.
Схема подключения дополнительных Python библиотек:
-
Администратор в переменных .env-файла указывает:
- какие внешние библиотеки необходимо установить в контейнеры etl-data-preview и etl-airflow
(переменная
ETL_EXTRA_PYLIBS_INSTALL
); - какие модули разрешены для импорта в etl-скриптах и etl-блоках
(переменная
ETL_EXTRA_PYLIBS_ALLOW
).
- какие внешние библиотеки необходимо установить в контейнеры etl-data-preview и etl-airflow
(переменная
-
При перезагрузке AW BI (
docker-compose up -d --
) указанные библиотеки автоматически устанавливаются в etl-контейнеры; -
Администратор проверяет успешность настройки, запуская показ логов одного из контейнеров: etl-data-preview или etl-airflow (
docker compose logs etl-data-preview
). В самом начале лога должны быть отметки об успешной установке библиотек.
В этой схеме, дополнительные библиотеки перед установкой скачиваются из внешнего pypi-репозитория. При отстутствии интернета (например, при развертывании AW BI в закрытом контуре), схема подключения выглядит чуть сложнее.
Переменные окружения¶
Переменная | Описание |
---|---|
ETL_EXTRA_PYLIBS_INSTALL |
Перечисление библиотек, которые необходимо дополнительно установить в etl-контейнеры. Библиотеки указываются в формате pip-пакетов. |
ETL_EXTRA_PYLIBS_ALLOW |
Перечисление пакетов, импорт которых разрешен в etl-скриптах. Список указывается через пробел или запятую |
ETL_EXTRA_PYBUILTINS_ALLOW |
Перечисление стандартных функций, использование которых разрешено в etl-скриптах |
ETL_EXTRA_PYWHEELS |
Путь к хостовой папке, в которой располагаются заранее скачанные whl-пакеты для устанавливаемых библиотек |
ETL_EXTRA_PYLIBS_INSTALL¶
В этой переменной указывается "источник", откуда система будет брать пакеты для установки дополнительных библиотек. Для этого есть несколько вариантов.
1. Установка из стандартного pypi-репозитория
# последние версии библиотек
ETL_EXTRA_PYLIBS_INSTALL=beautifulsoup4 clickhouse_parser
# конкретные версии библиотек
ETL_EXTRA_PYLIBS_INSTALL=beautifulsoup4==4.13.3 clickhouse-driver==0.2.9
# указанные минимальные и (или) максимальные версии
ETL_EXTRA_PYLIBS_INSTALL=beautifulsoup4>=4.12 clickhouse_driver<=0.2.9 pandas-gbq>=0.23,<0.24
2. Установка из стороннего pypi-репозитория
3. Установка из внешнего git-репозитория
ETL_EXTRA_PYLIBS_INSTALL=git+https://github.com/mymarilyn/clickhouse-driver@master#egg=clickhouse-driver
4. Установка wheel-пакетов из локальной папки. Предварительно, нужно прописать путь к папке с whl-файлами в переменной ETL_EXTRA_PYWHEELS
и пересоздать контейнеры AW BI.
ETL_EXTRA_PYWHEELS=/opt/aw/my_python_libs # путь к любой папке на хосте
ETL_EXTRA_PYLIBS_INSTALL=/app/extra_pywheels/*
ETL_EXTRA_PYLIBS_ALLOW¶
В этой переменной задаются пакеты, импорт которых разрешен в etl-скриптах и etl-блоках. Список пакетов указывается через пробел или запятую.
ETL_EXTRA_PYBUILTINS_ALLOW¶
В стандартной библиотеки языка Python есть некоторое количество встроенных (builtins) функций , из которых не все разрешены к использованию в etl-скриптах.
Дополнительно разрешенные имена функций перечисляются в переменной ETL_EXTRA_PYBUILTINS_ALLOW
через пробел или запятую.
Примеры:
ETL_EXTRA_PYWHEELS¶
Здесь Путь к локальной папке на хосте с docker-контейнерами AW BI, в которой располагаются готовые к установке whl-файлы дополнительных библиотек.
Если значение переменной указано, что эта папка будет подключена внутрь etl-контейнеров AW BI по пути /app/extra_pywheels
. Для установки библиотек
из данного расположения необходимо указать ETL_EXTRA_PYLIBS_INSTALL=/app/extra_pywheels/*
.
Если нет доступа в интернет¶
Скачивание пакетов¶
При отсутствии доступа в интернет (например, в закрытых контурах), whl-пакеты устанавливаемых библиотек необходимо скачать заранее. Для этого есть несколько вариантов.
1. Если есть образ etl-mono
нужной версии AW BI или доступ к registry.analyticworkspace.ru
# Пример скачивания whl-пакетов в папку /opt/aw/my_python_libs
# (можно указать путь к любой хостовой папке)
# Замените тег (:1.34) у образа etl-mono на нужную вам версию
docker run -it --rm \
-v /opt/aw/my_python_libs:/app/extra_pywheels \
registry.analyticworkspace.ru/aw/etl-mono:1.34 export-wheels \
"beautifulsoup4 clickhouse_driver"
2. У вас есть доступ к стенду, на котором установлена AW BI нужной вам версии и есть доступ в интернет (обычно, это какой-то stage/pre-release сервер).
Установите значение переменной ETL_EXTRA_PYWHEELS
. Здесь указывается любая хостовая папка, в которую будут
скачаны whl-пакеты библиотек:
Запустите скачивание пакетов:
3. Если вы точно уверены, что нужная вам библиотека не требует различных сборок для разных платформ, операционных системы и версий python, то вы можете скачать whl-пакеты с помощью обычного pip.
Настройка AW BI¶
Скопируйте скачанные whl-файлы на стенд, у которого нет доступа в интернет, в любую хостовую папку (например, в /opt/aw/extra_pywheels).
Установите значения паременных:
ETL_EXTRA_PYWHEELS=/opt/aw/my_python_libs # путь к папке, в которую вы скопировали whl-пакеты
ETL_EXTRA_PYLIBS_INSTALL=/app/extra_pywheels/*
Перезагрузите AW BI:
Убедитесь, что библиотеки были установлены корректно. В самом начале лога контейнеров etl-data-preview и etl-airflow будут отметки об этом:
# Пример лога с успешно установленными библиотеками
user@myserver:/opt/aw/app$ docker compose logs etl-data-preview
etl-data-preview-1 | Collecting beautifulsoup4
etl-data-preview-1 | Downloading beautifulsoup4-4.12.3-py3-none-any.whl.metadata (3.8 kB)
etl-data-preview-1 | Collecting clickhouse_driver
etl-data-preview-1 | Downloading clickhouse_driver-0.2.9-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (6.1 kB)
etl-data-preview-1 | Collecting soupsieve>1.2 (from beautifulsoup4)
etl-data-preview-1 | Downloading soupsieve-2.5-py3-none-any.whl.metadata (4.7 kB)
etl-data-preview-1 | Requirement already satisfied: pytz in /usr/local/lib/python3.12/site-packages (from clickhouse_driver) (2024.1)
etl-data-preview-1 | Collecting tzlocal (from clickhouse_driver)
etl-data-preview-1 | Downloading tzlocal-5.2-py3-none-any.whl.metadata (7.8 kB)
etl-data-preview-1 | Downloading beautifulsoup4-4.12.3-py3-none-any.whl (147 kB)
etl-data-preview-1 | Downloading clickhouse_driver-0.2.9-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.0 MB)
etl-data-preview-1 | ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.0/1.0 MB 4.1 MB/s eta 0:00:00
etl-data-preview-1 | Downloading soupsieve-2.5-py3-none-any.whl (36 kB)
etl-data-preview-1 | Downloading tzlocal-5.2-py3-none-any.whl (17 kB)
etl-data-preview-1 | Installing collected packages: tzlocal, soupsieve, clickhouse_driver, beautifulsoup4
etl-data-preview-1 | Successfully installed beautifulsoup4-4.12.3 clickhouse_driver-0.2.9 soupsieve-2.5 tzlocal-5.2
...