# Зависимости

## Зависимости плагинов. Установка зависимостей.

Плагины Аксиомы могут использовать сторонние библиотеки 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

Примечание

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

Также, зависимости можно установить напрямую, например, для использования в интерактивной консоли python.

Пример команды установки зависимостей из файла «requirements.txt»:

Команда для установки зависимостей из файла «requirements.txt», где <AXIOMA> - папка установленной Аксиомы.

    # Linux
    "<AXIOMA>/sbin/run-python" -m pip install -r ./requirements.txt
    # Например:
    "/opt/axioma-gis6/sbin/run-python" -m pip install -r ./requirements.txt

    # Windows
    "<AXIOMA>\bin\python\python.exe" -m pip install -r requirements.txt
    # Например:
    "C:\Program Files\Axioma v6\bin\python\python.exe" -m pip install -r requirements.txt

Пример команды установки отдельного пакета по имени:

Команда для установки отдельного пакета по имени, где <AXIOMA> - папка установленной Аксиомы.

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

    # Linux
    "<AXIOMA>/sbin/run-python" -m pip install qt5_applications
    # Например:
    "/opt/axioma-gis6/sbin/run-python" -m pip install qt5_applications

    # Windows
    "<AXIOMA>\bin\python\python.exe" -m pip install qt5_applications
    # Например:
    "C:\Program Files\Axioma v6\bin\python\python.exe" -m pip install qt5_applications

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

## Расположение каталога установки зависимостей site-packages

Расположение каталога установки зависимостей, где <VERSION> - это номер версии Аксиомы, например «6».

Для Windows:
`"%APPDATA%/ESTI/Axioma.GIS/v<VERSION>/installed_modules/dependencies/site-packages"`
Примерный результат:
`C:/Users/user/AppData/Roaming/ESTI/Axioma.GIS/v6/installed_modules/dependencies/site-packages`
Для Linux:
`"${HOME}"/.local/share/ESTI/Axioma.GIS/v<VERSION>/installed_modules/dependencies/site-packages`
Примерный результат:
`/home/user/.local/share/ESTI/Axioma.GIS/v6/installed_modules/dependencies/site-packages`
Для macOS:
`"${HOME}/Library/Application Support/ESTI/Axioma.GIS/v6/installed_modules/dependencies/site-packages"`
Примерный результат:
`/home/user/Library/Application Support/ESTI/Axioma.GIS/v6/installed_modules/dependencies/site-packages`

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

Команда для получения каталога зависимых пакетов, где <AXIOMA> - папка установленной Аксиомы.

    # Linux
    "<AXIOMA>/sbin/run-python" -c "import axipy; axipy.init_axioma(); print(axipy.get_dependencies_folder())"
    # Например:
    "/opt/axioma-gis6/sbin/run-python" -c "import axipy; axipy.init_axioma(); print(axipy.get_dependencies_folder())"

    # Windows
    "<AXIOMA>\bin\python\python.exe" -c "import axipy; axipy.init_axioma(); print(axipy.get_dependencies_folder())"
    # Например:
    "C:\Program Files\Axioma v6\bin\python\python.exe" -c "import axipy; axipy.init_axioma(); print(axipy.get_dependencies_folder())"

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

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

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

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

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

2. Извлечь из архива с плагином `.axp` файл зависимостей `requirements.txt`.

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

Загрузка необходимых пакетов в папку, где <AXIOMA> - папка установленной Аксиомы.

    # Linux
    "<AXIOMA>/sbin/run-python" -m pip download -r ./requirements.txt --dest ./module_deps/
    # Например:
    "/opt/axioma-gis6/sbin/run-python" -m pip download -r ./requirements.txt --dest ./module_deps/

    # Windows
    "<AXIOMA>\bin\python\python.exe" -m pip download -r requirements.txt --dest module_deps
    # Например:
    "C:\Program Files\Axioma v6\bin\python\python.exe" -m pip download -r requirements.txt --dest module_deps

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

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

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

Установка необходимых пакетов из папки, где <AXIOMA> - папка установленной Аксиомы.

    # Linux
    "<AXIOMA>/sbin/run-python" -m pip install -r ./requirements.txt --no-index --find-links ./module_deps/
    # Например:
    "/opt/axioma-gis6/sbin/run-python" -m pip install -r ./requirements.txt --no-index --find-links ./module_deps/

    # Windows
    "<AXIOMA>\bin\python\python.exe" -m pip install -r requirements.txt --no-index --find-links module_deps
    # Например:
    "C:\Program Files\Axioma v6\bin\python\python.exe" -m pip install -r requirements.txt --no-index --find-links module_deps

6. Установить архив с плагином `*.axp`.