Зависимости¶
Модули Аксиома могут использовать сторонние библиотеки Python. Такой модуль во время установки обратится к каталогу пакетов PyPI и установит необходимые зависимости.
В коде модуля пакет импортируется обычным способом:
import numpy
...
Зависимости перечисляются в специальном файле requirements.txt
. Так модуль
с зависимостями может иметь следующую структуру:
ru_axioma_gis_axipy_example_plugin_from_package
├── __init__.py
├── manifest.ini
└── requirements.txt
Файл является простым текстовым файлом в кодировке UTF-8
, в котором
построчно перечислены необходимые пакеты. Например:
numpy
requests
idna
Примечание
В настоящий момент нет возможности указать версию пакета.
Библиотека matplotlib¶
Matplotlib - одна из популярных библиотек для визуализации данных на языке Python. Она может быть использована с PySide2, axipy и ГИС Аксиома.
Однако, из-за особенностей поиска доступных реализаций, matplotlib пытается использовать PyQt5. PyQt5 присутствует в ГИС Аксиома потому, что старое API axioma построено на нем.
Чтобы заставить matplotlib использовать PySide2, можно временно спрятать модуль PyQt5. Тогда импорт matplotlib пройдет без ошибок.
hidepyqt = sys.modules.pop('PyQt5.QtCore', None)
import matplotlib.backends.backend_qt5agg
if hidepyqt:
sys.modules['PyQt5.QtCore'] = hidepyqt
Без интернета. Ручная установка пакетов.¶
Может возникнуть ситуация, когда устанавливаемый модуль имеет внешние зависимости, а доступа к каталогу пакетов PyPI нет. Модуль не сможет успешно установиться.
В этом случае можно скачать все необходимые зависимые пакеты на компьютере, который имеет доступ к интернету и конкретно к каталогу пакетов PyPI, а затем перенести их на целевой компьютер.
Для этого рекомендуется:
Установить ГИС Аксиома на компьютер с доступом к сети Интернет (той же версии и платформы).
Извлечь из архива с модулем
.axp
файл зависимостейrequirements.txt
.Используя командную строку и интерпретатор Python внутри установленной Аксиомы, выполнить
python -m pip download -r requirements.txt --dest ./module_deps/
, где module_deps
- папка, в которую будут загружены зависимые пакеты.
Перенести зависимые пакеты на компьютер без интернета.
Аналогично, используя командную строку и интерпретатор Python внутри установленной Аксиомы, выполнить
python -m pip install -r requirements.txt --user --no-index --find-links ./module_deps/
Установить сам модуль
*.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 наименование пакета, который необходимо установить.