Кросс-компиляция расширений Python

Технология сборки и установки расширений (модулей) Python для поддерживаемых целевых платформ

Описание технологии
Требования и ограничения
Порядок действий (автоматизированный режим
Дополнительная информация

Описание технологии

Многие расширения (модули) для среды программирования Python поставляются в виде платформонезависимого байт-кода и могут быть установлены и использованы на целевых системах любой архитектуры, поддерживаемой ЗОСРВ "Нейтрино". Однако, в тех случаях, когда расширения частично поставляются в виде исходного кода (например, часть внутренних функций написана на языке Си или каком-либо другом), требуется их предварительная компиляция с учётом архитектуры тех целевых платформ, на которых данное расширение будет использоваться.

Технология сборки расширений (модулей) Python для ЗОСРВ "Нейтрино" позволяет автоматизировать процесс настройки окружения для кросс-компиляции. В результате установка модулей может быть выполнена с помощью типовых инструментов, входящих в состав инструментария Python (например, системы управления пакетами pip).


Note: Технология кросс-компиляции расширений для Python в составе КР редакции 2020 года является экспериментальной; в случае возникновения вопросов относительно её применения и функционирования просим обращаться в службу Технической поддержки.

Требования и ограничения

Порядок действий (автоматизированный режим

  1. Настроить окружение кросс-компиляции с помощью скрипта python-setup-crossenv.sh, входящего в состав Инструментария. Пример (для подготовки в каталоге /tmp/venv окружения кросс-компиляции модулей Python под целевую платформу x86):

    # python-setup-crossenv.sh -t x86 /tmp/venv


    Note: Каталог /tmp/venv, указанный в примере, будет создан автоматически

  2. Активировать кросс-окружение в текущей сессии командного интерпретатора:

    # . /tmp/venv/x86/bin/activate


    Note: Используется именно команда source (она же "."), а не запуск скрипта

  3. Непосредственно установка модулей в режиме кросс-компиляции выполняется с помощью враппера cross-python3 (он становится доступным через PATH после активации кросс-окружения с помощью скрипта activate, выполненной в предыдущем пункте).

    Пример (кросс-компиляция математической библиотеки NumPy):

    (cross) $ cross-python3 -m pip install numpy

  4. Перенести собранные модули с инструментальной машины (см. /tmp/venv/x86/cross/lib/python3.9/site-packages) на целевую машину (соответственно, в /usr/lib/python3.9/site-packages с сохранением структуры файлов и каталогов) и проверить их работоспособность.

Дополнительная информация




Предыдущий раздел: Тематические статьи