Скрипты Python

Python - это интерпретируемый язык программирования высокого уровня для программирования общего назначения. В Python реализована система динамических типов и автоматическое управление памятью. Он поддерживает множество парадигм программирования, включая объектно-ориентированное, императивное, функциональное и процедурное, и имеет большую и обширную стандартную библиотеку.

Для интеграции скриптов Python 3 в SberMobile необходимо выполнить несколько предварительных шагов, указанных ниже.

Руководство по интеграции Python

1. Установка Python

Загрузите и установите Python в вашу систему. Рекомендуется устанавливать Python как общесистемный компонент, а не пользовательский. Существует несколько способов установки Python:

Версии Python

Текущая версия SberMobile совместима с версиями Python 3.5 и выше.

Некоторые старые версии SberMobile совместимы только с версией Python 3.6.

2. Установка Visual C++ Redistributable (только для Windows)

Установите последний пакет Visual C++ Redistributable "все в одном" для версий 2015-2022.

3. Настройка переменных окружения

Необходимо установить или обновить несколько переменных окружения. Следующие изменения должны быть сделаны для пользователя, под которым будет запущен SberMobile. То есть, если SberMobile работает как служба в Windows, следует обновить системные переменные, а не переменные на уровне пользователя.

  • PYTHONHOME - корневой каталог вашей установки Python

  • Добавьте PATH к путям: %PYTHONHOME%(или $PYTHONHOME) и %PYTHONHOME%/Скрипты(или $PYTHONHOME/Скрипты).

4. Установка Pip

Pip - это менеджер пакетов для Python, который можно установить следующим образом:

# или загрузить из браузера, если у вас нет curl 
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py

5. Установка Pandas

Интеграция требует использования библиотеки анализа данных Pandas с открытым исходным кодом, которая добавляет ряд полезных инструментов к стандартной библиотеке python. В большинстве систем этот пакет можно установить следующим образом:

Pip

pip install pandas

Anaconda

Pandas и его зависимости обычно включаются по умолчанию в новые среды Python, созданные с помощью Anaconda. При необходимости Pandas можно установить следующим образом:

conda install -c conda-forge pandas

6. Установка JEP (Java Embedded Python)

JEP позволяет выполнять код Python в Java-приложениях и обеспечивает доступ к модулям, объектам и функциям Python, как к объектам Java. Текущая функция позволяет SberMobile взаимодействовать с Python-скриптами.

Пользователи Windows: Рекомендуется установить JEP из исходного кода или распаковать соответствующий архив jep-distro в то место, где был установлен Pandas. Чтобы определить путь, запустите python show pandas и найдите метку Location.

Пользователи Linux: Просто установите JEP с помощью pip или Anaconda:

Pip

pip install jep

Anaconda

conda install -c conda-forge jep

7. Интеграция с SberMobile Server

Может быть необходимо только для старых версий 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. Перезагрузите машину

Перезагрузите машину и запустите сервер SberMobile.

Интерфейс скриптов

Скриты пишутся на языке 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" должна быть установлена отдельно, как указано выше.

Шаблон скрипта

Когда создается новый скрипт, его текст не пуст. Он содержит автогенерируемый код с двумя переменными:

dataSetDataFrameInput # Входные параметры (pandas.DataFrame) 
dataSetDataFrameOutput #Параметры вывода (pandas.DataFrame)

Для выполнения скриптов Python в вашей ОС должны быть переменные окружения Python.

Пример скрипта

Пример скрипта 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