Скрипты Python![](anchor.svg)
Python - это интерпретируемый язык программирования высокого уровня для программирования общего назначения. В Python реализована система динамических типов и автоматическое управление памятью. Он поддерживает множество парадигм программирования, включая объектно-ориентированное, императивное, функциональное и процедурное, и имеет большую и обширную стандартную библиотеку.
Для интеграции скриптов Python 3 в SberMobile необходимо выполнить несколько предварительных шагов, указанных ниже.
Руководство по интеграции Python![](anchor.svg)
1. Установка Python![](anchor.svg)
Загрузите и установите Python в вашу систему. Рекомендуется устанавливать Python как общесистемный компонент, а не пользовательский. Существует несколько способов установки Python:
В исходной документации Python есть инструкции по установке для широкого спектра операционных систем.
Python также может быть установлен через Anaconda, что может упростить установку зависимости JEP.
![]() | Версии Python Текущая версия SberMobile совместима с версиями Python 3.5 и выше. Некоторые старые версии SberMobile совместимы только с версией Python 3.6. |
2. Установка Visual C++ Redistributable (только для Windows)![](anchor.svg)
Установите последний пакет Visual C++ Redistributable "все в одном" для версий 2015-2022.
3. Настройка переменных окружения![](anchor.svg)
Необходимо установить или обновить несколько переменных окружения. Следующие изменения должны быть сделаны для пользователя, под которым будет запущен SberMobile. То есть, если SberMobile работает как служба в Windows, следует обновить системные переменные, а не переменные на уровне пользователя.
PYTHONHOME - корневой каталог вашей установки Python
Добавьте PATH к путям: %PYTHONHOME%(или $PYTHONHOME) и %PYTHONHOME%/Скрипты(или $PYTHONHOME/Скрипты).
4. Установка Pip![](anchor.svg)
Pip - это менеджер пакетов для Python, который можно установить следующим образом:
# или загрузить из браузера, если у вас нет curl
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py
5. Установка Pandas![](anchor.svg)
Интеграция требует использования библиотеки анализа данных Pandas с открытым исходным кодом, которая добавляет ряд полезных инструментов к стандартной библиотеке python. В большинстве систем этот пакет можно установить следующим образом:
pip install pandas
Pandas и его зависимости обычно включаются по умолчанию в новые среды Python, созданные с помощью Anaconda. При необходимости Pandas можно установить следующим образом:
conda install -c conda-forge pandas
6. Установка JEP (Java Embedded Python)![](anchor.svg)
JEP позволяет выполнять код Python в Java-приложениях и обеспечивает доступ к модулям, объектам и функциям Python, как к объектам Java. Текущая функция позволяет SberMobile взаимодействовать с Python-скриптами.
![]() | Пользователи Windows: Рекомендуется установить JEP из исходного кода или распаковать соответствующий архив jep-distro в то место, где был установлен Pandas. Чтобы определить путь, запустите |
![]() | Пользователи Linux: Просто установите JEP с помощью pip или Anaconda: pip install jep conda install -c conda-forge jep |
7. Интеграция с SberMobile Server![](anchor.svg)
![]() | Может быть необходимо только для старых версий SberMobile. Пропустите этот шаг, если используете последнюю версию SberMobile. |
Копируйте папку "jep" из каталога "lib" SberMobile Server в папку "site-packages" Python, если скрипты Python будут использоваться только для текущего пользователя.
Чтобы найти расположение каталога "site-packages", используйте команду:
python -m site --user-site
.
Копируйте папку "jep" из каталога SberMobile Server "lib" в папку Python "dist-packages", если скрипты Python будут использоваться для всех пользователей.
Чтобы найти расположение каталога "dist-packages", используйте команду:
python -m site
.
9. Перезагрузите машину![](anchor.svg)
Перезагрузите машину и запустите сервер SberMobile.
Интерфейс скриптов![](anchor.svg)
Скриты пишутся на языке Python. Каждый скрипт должен содержать:
dataSetDataFrameInput
dataSetDataFrameOutput
Где dataSetDataFrameInput - это pandas.DataFrame
, преобразованный из входной Data Table.
Все SberMobile числовые типы данных (например, Integer, Double или Long) и тип Date преобразуются в double тип Python.
Все строковые типы SberMobile и типы цветов преобразуются в строковый тип Python
(str
).Каждая вложенная Таблица данных будет преобразована во вложенный
pandas.DataFrame
.
При преобразовании Таблицы данных в pandas.DataFrame
имена всех столбцов остались прежними. В pandas.DataFrame
количество строк и столбцов соответствует количеству записей и полей Data Table соответственно.
Результат выполнения должен быть присвоен dataSetDataFrameOutput.
![]() | Библиотека "pandas" не включена в стандартный интерпретатор Python. Библиотека "pandas" должна быть установлена отдельно, как указано выше. |
Шаблон скрипта![](anchor.svg)
Когда создается новый скрипт, его текст не пуст. Он содержит автогенерируемый код с двумя переменными:
dataSetDataFrameInput # Входные параметры (pandas.DataFrame)
dataSetDataFrameOutput #Параметры вывода (pandas.DataFrame)
![]() | Для выполнения скриптов Python в вашей ОС должны быть переменные окружения Python. |
Пример скрипта![](anchor.svg)
Пример скрипта Python:
import pandas
dataSetDataFrameInput #scrScriptPyDefaultDataFrame
pythonList = list()
pythonList.append(1)
pythonList.append(2)
pythonList.append(3)
innerStrList = list()
innerStrList.append("newStr")
innerStrList.append("someStr")
innerStrList.append("superStr")
pythonList.append(innerStrList)
df = pandas.DataFrame(pythonList)
dataSetDataFrameOutput = df #scrScriptPyDefaultDataFrame