как добавить сторонюю python-библиотеку в плагин QGIS

Вопросы по свободной ГИС QGIS. Сообщения об ошибках, предложения по улучшению, локализация.
Ответить
Аватара пользователя
Филиппов Владислав
Гуру
Сообщения: 1035
Зарегистрирован: 17 фев 2006, 06:28
Репутация: 144
Ваше звание: Геннадич
Откуда: Новосибирск
Контактная информация:

как добавить сторонюю python-библиотеку в плагин QGIS

Сообщение Филиппов Владислав » 30 окт 2014, 12:37

Здравствуйте.
Объясните или покажите что почитать про правильное добавление сторонней библиотеки в мой плагин для QGIS.
Мне нужна вот эта библиотека.
Что нужно выполнить для того чтобы она была видна интерпретатору Python?
структура кода такова:
есть директория плагина, в ней есть директория с инструментами (tools), в которой есть директория с нужной библиотекой () и классы использующие эту библиотеку.

Код: Выделить всё

/
 --/tools
 --------module_use_svgwrite_class.py
 --------/svgwrite
 -------------------svgwrite_class_here.py
 --myplugin.py
в module_use_svgwrite_class.py я импортирую всё что мне нужно (from QVertex.tools.svgwrite import *) и использую

Код: Выделить всё

    def createSvgGeodata(self, path):
        canvas = Drawing(path + '/geodata.svg', profile='tiny')
        canvas.add(canvas.text('', insert=(0, 0.2), fill='black'))
        canvas.save()
Drawing из библиотки.

Но в самой библиотке:

Код: Выделить всё

from svgwrite.container import SVG, Defs
from svgwrite.elementfactory import ElementFactory
и это не нравится QGIS:

Код: Выделить всё

  File "C:/PROGRA~1/QGISCH~1/apps/qgis/./python\qgis\utils.py", line 454, in _import
    mod = _builtin_import(name, globals, locals, fromlist, level)
  File "C:/Users/filippov/.qgis2/python/plugins\QVertex\tools\coordcatalog.py", line 15, in 
    from QVertex.tools.svgwrite import *
  File "C:/PROGRA~1/QGISCH~1/apps/qgis/./python\qgis\utils.py", line 454, in _import
    mod = _builtin_import(name, globals, locals, fromlist, level)
  File "C:/Users/filippov/.qgis2/python/plugins\QVertex\tools\svgwrite\__init__.py", line 51, in 
    from svgwrite.drawing import Drawing
  File "C:/PROGRA~1/QGISCH~1/apps/qgis/./python\qgis\utils.py", line 454, in _import
    mod = _builtin_import(name, globals, locals, fromlist, level)
ImportError: No module named svgwrite.drawing
\QVertex\tools\svgwrite\ добавлена в PYTHONPATH

Аватара пользователя
Филиппов Владислав
Гуру
Сообщения: 1035
Зарегистрирован: 17 фев 2006, 06:28
Репутация: 144
Ваше звание: Геннадич
Откуда: Новосибирск
Контактная информация:

Re: как добавить сторонюю python-библиотеку в плагин QGIS

Сообщение Филиппов Владислав » 06 ноя 2014, 14:42

ничего другого, как добавлять библиотеку в ..\Python27\Lib\site-packages\ на целевой машине, не придумал

Ariki
Гуру
Сообщения: 731
Зарегистрирован: 12 янв 2011, 22:40
Репутация: 304
Ваше звание:

Re: как добавить сторонюю python-библиотеку в плагин QGIS

Сообщение Ariki » 06 ноя 2014, 15:20

Насколько я понимаю, добавлять в PYTHONPATH нужно не каталог-пакет svgwrite, а родительский каталог, в котором интерпретатор будет искать пакеты и модули.
В вашем модуле перед импортом пакета svgwrite или его модулей:

Код: Выделить всё

import os, sys
sys.path.append(os.path.dirname(__file__))

Аватара пользователя
Филиппов Владислав
Гуру
Сообщения: 1035
Зарегистрирован: 17 фев 2006, 06:28
Репутация: 144
Ваше звание: Геннадич
Откуда: Новосибирск
Контактная информация:

Re: как добавить сторонюю python-библиотеку в плагин QGIS

Сообщение Филиппов Владислав » 07 ноя 2014, 05:41

а как же тогда весь остальной мой код работает?

Ariki
Гуру
Сообщения: 731
Зарегистрирован: 12 янв 2011, 22:40
Репутация: 304
Ваше звание:

Re: как добавить сторонюю python-библиотеку в плагин QGIS

Сообщение Ariki » 07 ноя 2014, 12:17

Остальной код в этом плагине или вообще?
И вы не написали, сработало ли моё решение.

Аватара пользователя
Филиппов Владислав
Гуру
Сообщения: 1035
Зарегистрирован: 17 фев 2006, 06:28
Репутация: 144
Ваше звание: Геннадич
Откуда: Новосибирск
Контактная информация:

Re: как добавить сторонюю python-библиотеку в плагин QGIS

Сообщение Филиппов Владислав » 07 ноя 2014, 12:29

в этом моём плагине всё работает. добавляю либу в директорию плагина и проблемы при работе кода внутри либы, не моего кода
вот структура плагина:
Снимок.PNG
Снимок.PNG (81.4 КБ) 11598 просмотров

Ariki
Гуру
Сообщения: 731
Зарегистрирован: 12 янв 2011, 22:40
Репутация: 304
Ваше звание:

Re: как добавить сторонюю python-библиотеку в плагин QGIS

Сообщение Ariki » 07 ноя 2014, 12:37

И ошибки остались те же?

Аватара пользователя
Филиппов Владислав
Гуру
Сообщения: 1035
Зарегистрирован: 17 фев 2006, 06:28
Репутация: 144
Ваше звание: Геннадич
Откуда: Новосибирск
Контактная информация:

Re: как добавить сторонюю python-библиотеку в плагин QGIS

Сообщение Филиппов Владислав » 07 ноя 2014, 12:43

сейчас ошибок нет, т.к. либа в site-packages.
если её добавить в корень проекта или в директрию tools, то да, как и в заглавном посте:

File "C:/Users/filippov/.qgis2/python/plugins\QVertex\tools\svgwrite\__init__.py", line 51, in
from svgwrite.drawing import Drawing
File "C:/PROGRA~1/QGISCH~1/apps/qgis/./python\qgis\utils.py", line 454, in _import
mod = _builtin_import(name, globals, locals, fromlist, level)
ImportError: No module named svgwrite.drawing

строчка с импортом svgwrite.drawing это в __init__.py внутри \svgwrite\

Ariki
Гуру
Сообщения: 731
Зарегистрирован: 12 янв 2011, 22:40
Репутация: 304
Ваше звание:

Re: как добавить сторонюю python-библиотеку в плагин QGIS

Сообщение Ariki » 07 ноя 2014, 13:08

Я правильно понимаю, что это не ваше приложение, а QGIS сам пытается импортировать svgwrite?
В любом случае, вам нужно обеспечить, чтобы на момент, когда svgwrite импортирует свои модули, родительский для svgwrite/ каталог был в path. Иначе пакет svgwrite не сможет найти сам себя, чтобы импортировать свои модули.

Аватара пользователя
Филиппов Владислав
Гуру
Сообщения: 1035
Зарегистрирован: 17 фев 2006, 06:28
Репутация: 144
Ваше звание: Геннадич
Откуда: Новосибирск
Контактная информация:

Re: как добавить сторонюю python-библиотеку в плагин QGIS

Сообщение Филиппов Владислав » 07 ноя 2014, 13:11

совершенно верно! так что вперёд подтягивает QGIS - мой плагин или либу которою использует плагин?

Ariki
Гуру
Сообщения: 731
Зарегистрирован: 12 янв 2011, 22:40
Репутация: 304
Ваше звание:

Re: как добавить сторонюю python-библиотеку в плагин QGIS

Сообщение Ariki » 07 ноя 2014, 13:25

Казалось бы, зачем ему вообще её подтягивать? Не принимает ли он её за самостоятельный плагин? Ему же надо импортировать пакет, чтобы понять, плагин это или нет. Честно говоря, не знаю, как плагины ищутся в QGIS: только в корневом каталоге или в подкаталогах тоже?

Аватара пользователя
Филиппов Владислав
Гуру
Сообщения: 1035
Зарегистрирован: 17 фев 2006, 06:28
Репутация: 144
Ваше звание: Геннадич
Откуда: Новосибирск
Контактная информация:

Re: как добавить сторонюю python-библиотеку в плагин QGIS

Сообщение Филиппов Владислав » 07 ноя 2014, 13:28

есть есть желание, то можно экспериментировать https://github.com/filippov70/qVertex/tree/filippov

Ariki
Гуру
Сообщения: 731
Зарегистрирован: 12 янв 2011, 22:40
Репутация: 304
Ваше звание:

Re: как добавить сторонюю python-библиотеку в плагин QGIS

Сообщение Ariki » 07 ноя 2014, 14:12

У меня вроде работает. Положил svgwrite в QVertex/tools/, добавил приведённые выше 2 строчки в __init__.py пакета tools, для пробы запихнул импорт чего-то из svgwrite в coordcatalog.py. Больше у меня нигде в системе svgwrite нет.

Аватара пользователя
Филиппов Владислав
Гуру
Сообщения: 1035
Зарегистрирован: 17 фев 2006, 06:28
Репутация: 144
Ваше звание: Геннадич
Откуда: Новосибирск
Контактная информация:

Re: как добавить сторонюю python-библиотеку в плагин QGIS

Сообщение Филиппов Владислав » 07 ноя 2014, 14:13

дома проверю, заодно и на другой ОС :)
благодарю за помощь!

Аватара пользователя
Филиппов Владислав
Гуру
Сообщения: 1035
Зарегистрирован: 17 фев 2006, 06:28
Репутация: 144
Ваше звание: Геннадич
Откуда: Новосибирск
Контактная информация:

Re: как добавить сторонюю python-библиотеку в плагин QGIS

Сообщение Филиппов Владислав » 09 ноя 2014, 19:48

да. подтверждаю, работает.
Снимок-6.png
Снимок-6.png (217.41 КБ) 11498 просмотров

Ответить

Вернуться в «QGIS»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость