Использование сторонних модулей Python в QGIS

Я разработал плагин QGIS, который использует сторонние библиотеки. Текущая ситуация такова, что пользователь плагина должен установить некоторые библиотеки Python в QGIS, прежде чем он / она сможет использовать мой плагин. Каждый раз, когда устанавливается новая версия QGIS, использованные библиотеки должны снова устанавливать сторонние библиотеки, чтобы использовать мой плагин. Кроме того, в этой ситуации у пользователей нет прав администратора для установки библиотек. Им нужно попросить службу поддержки своей компании установить библиотеки.

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

1 ответ

Создайте в плагине файл require.txt со всеми пакетами, которые необходимо установить. Затем выполняйте его каждый раз при загрузке плагина. Вот пример файла require.txt:

Вот как вы можете установить пакеты в плагине:

       import pathlib
import sys
import os.path
def installer_func():
    plugin_dir = os.path.dirname(os.path.realpath(__file__))

    try:
        import pip
    except ImportError:
        exec(
            open(str(pathlib.Path(plugin_dir, 'scripts', 'get_pip.py'))).read()
        )
        import pip
        # just in case the included version is old
        pip.main(['install', '--upgrade', 'pip'])

    sys.path.append(plugin_dir)

    with open(os.path.join(plugin_dir,'requirements.txt'), "r") as requirements:
        for dep in requirements.readlines():
            dep = dep.strip().split("==")[0]
            try:
                __import__(dep)
            except ImportError as e:
                print("{} not available, installing".format(dep))
                pip.main(['install', dep])

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

Другие вопросы по тегам