Зависимости

Модули Аксиома могут использовать сторонние библиотеки Python. Такой модуль во время установки обратится к каталогу пакетов PyPI и установит необходимые зависимости.

В коде модуля пакет импортируется обычным способом:

Файл __init__.py
import numpy
...

Зависимости перечисляются в специальном файле requirements.txt. Так модуль с зависимостями может иметь следующую структуру:

ru_axioma_gis_axipy_example_plugin_from_package
├── __init__.py
├── manifest.ini
└── requirements.txt

Файл является простым текстовым файлом в кодировке UTF-8, в котором построчно перечислены необходимые пакеты. Например:

Файл requirements.txt
numpy
requests
idna

Примечание

В настоящий момент нет возможности указать версию пакета.

Библиотека matplotlib

Matplotlib - одна из популярных библиотек для визуализации данных на языке Python. Она может быть использована с PySide2, axipy и ГИС Аксиома.

Однако, из-за особенностей поиска доступных реализаций, matplotlib пытается использовать PyQt5. PyQt5 присутствует в ГИС Аксиома потому, что старое API axioma построено на нем.

Чтобы заставить matplotlib использовать PySide2, можно временно спрятать модуль PyQt5. Тогда импорт matplotlib пройдет без ошибок.

Импорт matplotlib с использованием PySide2
hidepyqt = sys.modules.pop('PyQt5.QtCore', None)
import matplotlib.backends.backend_qt5agg
if hidepyqt:
    sys.modules['PyQt5.QtCore'] = hidepyqt

Без интернета. Ручная установка пакетов.

Может возникнуть ситуация, когда устанавливаемый модуль имеет внешние зависимости, а доступа к каталогу пакетов PyPI нет. Модуль не сможет успешно установиться.

В этом случае можно скачать все необходимые зависимые пакеты на компьютере, который имеет доступ к интернету и конкретно к каталогу пакетов PyPI, а затем перенести их на целевой компьютер.

Для этого рекомендуется:

  1. Установить ГИС Аксиома на компьютер с доступом к сети Интернет (той же версии и платформы).

  2. Извлечь из архива с модулем .axp файл зависимостей requirements.txt.

  3. Используя командную строку и интерпретатор Python внутри установленной Аксиомы, выполнить

Загрузка необходимых пакетов в папку
python -m pip download -r requirements.txt --dest ./module_deps/

, где module_deps - папка, в которую будут загружены зависимые пакеты.

  1. Перенести зависимые пакеты на компьютер без интернета.

  2. Аналогично, используя командную строку и интерпретатор Python внутри установленной Аксиомы, выполнить

Установка необходимых пакетов из папки
python -m pip install -r requirements.txt --user --no-index --find-links ./module_deps/
  1. Установить сам модуль *.axp.

Определить каталог, куда будут устанавливаться зависимые python пакеты можно следующей командой:

python -m site --user-site

Результат:

C:\Users\user\AppData\Roaming\Python\Python37\site-packages

Для ориентировки, примерное расположение в зависимости от системы будет следующее:

Расположение каталога site-packages

  • для Windows – «%APPDATA%pythonpython<VERSION>site-packages»

  • для Linux – «$HOME/.local/lib/python<VERSION>/site-packages»

  • для macOS – «$HOME/Library/Python/<VERSION>/lib/python/site-packages»

Можно использовать для этих целей командный файл.

Пример скрипта для linux (install_requirement), где в качестве параметра можно передать имя файла с набором пакетов. Если параметр опущен, берется файл из текущего каталога requirements.txt:

#!/bin/bash

AXIOMA_BASE=/opt/Axioma.GIS

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${AXIOMA_BASE}/bin

if [ -z "$1" ]; then
 filename="requirements.txt"
else
 filename="$1"
fi

${AXIOMA_BASE}/python/bin/python3 -m pip install --user -r  ${filename}

Пример команды для Windows (выполняется в консоли cmd.exe):

"C:/Program Files/Axioma v4/bin/python/python.exe" -m pip install --user -r requirements.txt

Если есть необходимость установить отдельный пакет по имени, то команда будет выглядеть следующим образом:

"C:/Program Files/Axioma v4/bin/python/python.exe" -m pip install --user qt5_applications

где qt5_applications наименование пакета, который необходимо установить.