Параметры компонента: Python
Внесенные изменения вступают в силу после нажатия кнопки Сохранить.
Параметр | Значение по умолчанию | Описание |
---|---|---|
Выполнение запрещено | true | Параметр запрещает выполнение узла Python, если выставлено значение true, и позволяет выполнять узел при значении false |
Путь библиотеки | Определяет путь к файлу python3x.dll, где x — номер минорной версии, разделяемой библиотеки Python. Указывается опционально. По умолчанию используется установленный Python последней версии, зарегистрированный в операционной системе. Если в параметре путь не задан, то осуществляется его автоматический поиск в переменной окружения PYTHONHOME и реестре. Самый простой способ узнать путь до библиотеки python3x.dll — воспользоваться командной строкой в Windows. Для этого необходимо открыть консоль «Командная строка» («CMD») и ввести запрос «where python*.dll» (в качестве примера была выбрана для отображения версия Python 3.9). Ответом будет полный путь до необходимой библиотеки. |
|
Путь интерпретатора | Определяет путь к исполняемому файлу интерпретатора, который выполняет скрипт из узла Python в режиме выполнения Python в отдельном процессе. Кроме того этот путь учитывается в режиме выполнения узла Python при поиске модулей внутри процесса Loginom. По умолчанию Путь интерпретатора задается: 1. в Windows аналогично поиску разделяемой библиотеки; 2. в Linux следующим образом: а. определяется домашняя директория Python: если в переменной окружения PYTHONHOME указан действительный путь в системе, то берётся он, иначе домашняя директория равна /usr , б. оносительно домашней директории исполняемый файл интерпретатора ищется по пути /bin/python3 , в. если исполняемый файл не найден, то выполняется python3 без указания пути. |
|
Передавать переменные окружения узла | false | Параметр необходим для запуска процесса Python в изолированном окружении. При значении true в процесс Python добавляются переменные окружения: LAUNCHER_PATHS — примонтированные в файловое хранилище пути, разделенные : (Linux) или ; (Windows), LAUNCHER_USER — имя пользователя Loginom, LAUNCHER_USER_TMP и LAUNCHER_COMMON_TMP — пути папок для сохранения временных файлов пользователя и рабочей директории, LAUNCHER_PIPEDIR — имя папки, в которой создаются файлы именованных каналов для IPC (Linux), LAUNCHER_PIPENAME — имя дуплексного именованного канала для IPC (Windows), LAUNCHER_CURRENTDIR — имя текущей папки Loginom (совпадает с путём сохранённого пакета), LAUNCHER_LOCALE — имя текущей локали (например, ru_RU ), LAUNCHER_NODE_GUID — GUID узла, LAUNCHER_NODE_NAME — имя узла, LAUNCHER_NODE_DISPLAYNAME — метка узла, LAUNCHER_PREVIEW — устанавливается для Предпросмотра. |
Для работы узлов Python необходимо учитывать следующие особенности и ограничения:
- Минимальная поддерживаемая версия Python — 3.5.
- Максимальная протестированная версия Python — 3.12.
- Создание GUI-интерфейса из кода Python не является целевым назначением компонента Python и в некоторых случаях может приводить к неверной работе приложения. Например:
- работа узла не будет прекращена до завершения работы GUI-приложения. При работе в серверных редакциях Loginom пользователь, как правило, не имеет доступа к окну GUI-приложения.
Для работы узлов Python в изолированном окружении пользователя необходимо сделать следующее:
- В Администрировании, в параметрах компонента Python включить опцию "Передавать переменные окружения узла".
- В параметре "Путь интерпретатора" указать полный путь к bash-скрипту — python_run.sh (или аналогичному).
- Для запуска на Linux должен быть установлен Docker или Podman. В python_run.sh имеется параметр
DOCKER_OR_PODMAN
, отвечающий за способ контейниризиции, значение по умолчанию —podman
. - Должен быть подготовлен базовый docker образ c Python и нужными Python пакетами внутри. В python_run.sh имя образа прописывается в параметре
IMAGE_NAME
, значение по умолчанию —python
.
В python_run.sh имеется параметр CONTAINER_OPTIONS
, в который можно передавать настройки контейнера, например, значение переменной oom-score-adj
. По умолчанию устанавливается значение oom-score-adj=1000
. То есть если OOM Killer будет необходимо завершить какой-либо процесс, то контейнер будет первым кандидатом для этого.
Для работы узлов Python внутри процесса Loginom необходимо учитывать следующие особенности и ограничения:
- В системе должен быть установлен Python одной разрядности с приложением/сервером Loginom.
- Python из дистрибутива Anaconda не поддерживается.
- Не поддерживаются модули пакета multiprocessing.
- Создание GUI-интерфейса из кода Python не является целевым назначением компонента Python и в некоторых случаях может приводить к неверной работе приложения. Например:
- Оставленные незавершенными фоновые потоки могут приводить к аварийному завершению приложения.
- В случае критических ошибок python3x.dll может аварийно завершить приложение. Рекомендуется использовать предварительно отлаженный код Python.
- Одновременно может выполняться только один узел Python.
- Остановить выполнение узла Python можно только между инструкциями интерпретатора.
- Виртуальные окружения возможно использовать при задании Путь интерпретатора. Для этого путь интерпретатора должен указывать на python.exe внутри виртуального окружения подробнее о поиске модулей Python внутри процесса Loginom. Для корректной работы версия python.exe в виртуальном окружении и версия python3x.dll, через которую выполняется код узла, должны совпадать.
Примечание: для настольных редакций выполнение узла Python по умолчанию разрешено, при необходимости выполнение можно запретить.
Примечание: под Linux не поддерживается режим выполнения Python внутри процесса Loginom, следовательно, нет и настройки Путь библиотеки. Узлы Python, настроенные на выполнение внутри процесса, на Linux будут выполняться в отдельном процессе.
Поиск модулей Python внутри процесса Loginom
Путь к папке, в которой расположен интерпретатор, добавляется как ещё один путь в sys.path
— список путей, по которым ищутся модули.
Если на один каталог выше каталога Путь интерпретатора существует файл с именем pyvenv.cfg
, то sys.prefix
и sys.exec_prefix
устанавливаются равными этому каталогу, и проверяется наличие site-packages
. Найденный site-packages
добавляется в sys.path
. Если pyvenv.cfg
содержит ключ include-system-site-packages
и его значение не равно true, то базовый путь site-packages
(относительно sys.base_prefix
) не включается в sys.path
.