Страница 9 из 10
Re: Создание приложения на базе набора библиотек QGIS на Pyt
Добавлено: 20 июн 2013, 15:06
Alastriel
Максим Дубинин писал(а):для начала посмотрите внимательно что у вас в PATH
версия GDAL 1.7.3 намекает, что вы какое-то старье установили.
Всё удалите, поставьте начисто qgis-dev с OSGeo4W и сделайте
Подскажите тогда, пожалуйста, пошагово, как это устанавливается... сейчас у меня 100% все также как и в инструкции. Один раз вообще пробовала фул версию установить - уж на всякий случай...
Опять же где тогда скачать более новую версию?

Re: Создание приложения на базе набора библиотек QGIS на Pyt
Добавлено: 20 июн 2013, 15:19
Alastriel
Может быть можно отдельно переустановить GDAL?

Re: Создание приложения на базе набора библиотек QGIS на Pyt
Добавлено: 31 окт 2013, 15:43
ser117
Приветствую, товарищи.
У меня задача идентична названию темы, только
на С++.
Статья дала общее представление о том, как должен выглядеть процесс. В обсуждении нашел
эту ссылку с примерами, но, к сожалению, собрать их не получается.
Для сборки использую QT 4.7.3 с QT Creator'ом 2.4.1.
Подключаю в .pro файле qgis_core.lib и qgis_gui.lib от QGIS 1.0.2 Kore, также даю ссылку на папку со всеми .h (пример писАлся для версии 1.0.0). Также прописал DEFINES += CORE_EXPORT= и GUI_EXPORT=, иначе ругается, что не понимет этих слов. Не уверен, что это правильный путь, но иначе продвинуться не смог.
Итак, при билде линкер выдает 18 undefined referenc'ов:

- 1.JPG (69.46 КБ) 15079 просмотров
И чем я только его не пробовал...
Прикладываю "HelloWorld473.rar" - сам проект, и "plus.rar" - подключаемые .h и .lib
Подскажите, пожалуйста, что я упустил из виду? Может, я подключаю не [то/туда/так]?
Re: Создание приложения на базе набора библиотек QGIS на Pyt
Добавлено: 06 ноя 2013, 12:56
ser117
Проблему решил.
ОказаЛОСЬ, QGIS'овы либы заточены под MSVS, а мой Qt был предварительно собран в MinGW. Когда я все эти пакости ставил на комп, я еще не знал, что это важно. Что ж, теперь понятно, поэтму Qt и не мог слинковать екзеху.
Выход: Поставил Qt MSVS2010 AddIn, скачал Qt, собраный студией, ткнул студии пальцем на Qt'шные либы, и теперь пишу проект в студии. Собирается и работает вся система на "ура".
Re: Создание приложения на базе набора библиотек QGIS на Pyt
Добавлено: 22 авг 2015, 03:23
axinax
python не может импортировать qgis.core Вот что пишет
>>> import qgis.core
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
import qgis.core
File "C:\NextGIS_QGIS\apps\qgis\python\qgis\__init__.py", line 36, in <module>
from qgis.core import QgsFeature, QgsGeometry
File "C:\NextGIS_QGIS\apps\qgis\python\qgis\core\__init__.py", line 3, in <module>
from qgis._core import *
ImportError: DLL load failed: Не найдена указанная процедура.
>>>
В системе установлены:
NextGis- устанавливал с сайта в папку C:\NextGIS_QGIS
python27
python3
В PYTHONPATH прописаны C:\NextGIS_QGIS\apps\qgis\python;C:\NextGIS_QGIS\apps\qgis\python\qgis
в path прописан только то что в NextGis лежит (до этого удалил из path все что связано с обычным python- мучаюсь не первый день)
Если работаю в консоли python из NextGis то библиотеку видит
Вдогонку. А можно библиотеку отдельно из репозитория установить или ручками из исходников собрать, если да то как?
Удалил весь обычный python, теперь с консоли Винды он не запускается, только из консоли osgeo или из nextgis но хотелось бы иметь нормальный редактор кода а не блокнот
Re: Создание приложения на базе набора библиотек QGIS на Pyt
Добавлено: 22 авг 2015, 07:03
Denis Rykov
Удалил весь обычный python, теперь с консоли Винды он не запускается, только из консоли osgeo или из nextgis но хотелось бы иметь нормальный редактор кода а не блокнот
А как свяазны наличие в системе Python и редактор кода?
python не может импортировать qgis.core Вот что пишет
>>> import qgis.core
Вы это запускаете в консоли OSGeo4W? Там должно все работать.
Re: Создание приложения на базе набора библиотек QGIS на Pyt
Добавлено: 22 авг 2015, 15:13
axinax
Да, в консоли osgeo все работает. Но не работает python из консоли винды, редактор Эклипс тоже не видит этот python, даже python win из папки NextGis как то не так работает.
Кроме того не понятно, будут ли подгружаться другие сторонние библиотеки
Re: Создание приложения на базе набора библиотек QGIS на Pyt
Добавлено: 22 авг 2015, 17:01
Denis Rykov
Всё что вам нужно - это в тех местах, откуда вы запускаете Python указать правильные переменные окружения, в частности, PYTHONPATH (именно поэтому в OSGeo4W Shell все работает без проблем). С редактором я не совсем понял, что мешает редактировать код в нём, а запускать в OSGeo4W Shell? Или если у него есть встроенная консоль, то это также решается правильной настройкой путей.
Re: Создание приложения на базе набора библиотек QGIS на Pyt
Добавлено: 22 авг 2015, 22:43
axinax
моя path C:\NextGIS_QGIS\apps\Python27\Lib\site-packages;C:\NextGIS_QGIS\apps;C:\NextGIS_QGIS\apps\qgis\bin;C:\NextGIS_QGIS\bin (все что касается Python)
Pythonpath: C:\NextGIS_QGIS\apps\qgis\python;C:\NextGIS_QGIS\apps\qgis\python\qgis
А вот что сейчас пишет консоль винды Microsoft Windows [Version 6.1.7601]
(c) Корпорация Майкрософт (Microsoft Corp.), 2009. Все права защищены.
C:\Users\slon>python.exe
ImportError: No module named site
Добавил папку с модулем site в pythonpath, python в консоли заработал
Попробую установить стороннюю библиотеку
Не получилось(((
Microsoft Windows [Version 6.1.7601]
(c) Корпорация Майкрософт (Microsoft Corp.), 2009. Все права защищены.
C:\Users\slon>cd c:\distrib\pip-7.1.1
c:\Distrib\pip-7.1.1>python setup.py
Traceback (most recent call last):
File "setup.py", line 6, in <module>
from setuptools import setup, find_packages
ImportError: No module named setuptools
c:\Distrib\pip-7.1.1>
Re: Создание приложения на базе набора библиотек QGIS на Pyt
Добавлено: 23 авг 2015, 14:28
Ariki
Правильно, потому что сначала надо поставить setuptools. Кстати, для установки пакета скрипт setup.py нужно запускать с параметром install.
Официальный же способ установки pip такой: качаете скрипт
get-pip.py и запускаете его. Он сам скачает и установит setuptools и pip. Дальше уже можете пользоваться pip для установки и обновления пакетов.
Re: Создание приложения на базе набора библиотек QGIS на Pyt
Добавлено: 24 авг 2015, 13:17
axinax
to Ariki Спасибо! Но главный вопрос так и не решился, и не понимаю причины.
Буду потихоньку мигрировать на Ubuntu, тем более давно собирался (там таких проблем не возникало)
Re: Создание приложения на базе набора библиотек QGIS на Pyt
Добавлено: 19 авг 2016, 16:45
axinax
Я все таки смигрировал на Ubuntu и Mint (на разных компах). Вообще никаких проблем с путями!
А теперь вопрос: эта команда layer = QgsVectorLayer( layerPath, layerName, layerProvider )
не работает ни в терминале, ни в этом приложении. layer.isValid() выдает False. Причем, что характерно, добавил эти строки в testplugin от NextGis (из статьи Разработка простого расширения для QGIS на Python) просто для проверки - слой открылся в QGIS. Почему не работает в консоли, не могу понять. Сейчас пишу большое плагин для QGIS, интерфейс пока не делал, только "рабочие" классы. Тестирую в терминале, классы, основанные на QgsFeature, QgsGeometry нормально работают, а этот нет.
Ось - Убунту 16, QGIS 2.12
Re: Создание приложения на базе набора библиотек QGIS на Pyt
Добавлено: 17 окт 2016, 23:10
andemik
KolesovDmitry писал(а):Приложенный к статье архив с программой перестал работать... Конкретно, не срабатывает загрузка слоя:
Код: Выделить всё
def addLayer( self ):
"""add a (hardcoded) layer and zoom to its extent"""
# Слой должен быть в той же папке, что и файл приложения
# Имя слоя задано в коде
layerPath = "test.shp"
layerName = "test"
layerProvider = "ogr"
# Создать слой
layer = QgsVectorLayer( layerPath, layerName, layerProvider )
...
Т.е. сама программа запускается, появляется окно и панель инструментов, но кгода дело доходит до выполнения строки
Код: Выделить всё
layer = QgsVectorLayer( layerPath, layerName, layerProvider )
слой не добавляется, в консоль пишет "Failed to load"
PS версия: 1.7.4-Wroclaw
Вы решили проблему?
Re: Создание приложения на базе набора библиотек QGIS на Pyt
Добавлено: 17 окт 2016, 23:31
andemik
andemik писал(а):KolesovDmitry писал(а):Приложенный к статье архив с программой перестал работать... Конкретно, не срабатывает загрузка слоя:
Код: Выделить всё
def addLayer( self ):
"""add a (hardcoded) layer and zoom to its extent"""
# Слой должен быть в той же папке, что и файл приложения
# Имя слоя задано в коде
layerPath = "test.shp"
layerName = "test"
layerProvider = "ogr"
# Создать слой
layer = QgsVectorLayer( layerPath, layerName, layerProvider )
...
Т.е. сама программа запускается, появляется окно и панель инструментов, но кгода дело доходит до выполнения строки
Код: Выделить всё
layer = QgsVectorLayer( layerPath, layerName, layerProvider )
слой не добавляется, в консоль пишет "Failed to load"
PS версия: 1.7.4-Wroclaw
Вы решили проблему?
В моем случае ошибка была в том, что не была установлена переменная OSGEOROOT=C:\OSGeo4W
Re: Создание приложения на базе набора библиотек QGIS на Pyt
Добавлено: 17 окт 2016, 23:46
andemik
Вообще у меня были практически все проблемы, которые тут описывались.
Для запуска можно создать .bat-ник с таким кодом:
Код: Выделить всё
@ECHO OFF
set OSGEOROOT=C:\OSGeo4W
set PATH=%OSGEOROOT%\bin;%OSGEOROOT%\apps\qgis-dev\bin;%PATH%
SET PYTHONHOME=%OSGEOROOT%\apps\Python27
set PYTHONPATH=%OSGEOROOT%\apps\qgis-dev\python;%OSGEOROOT%\apps\qgis-dev\bin
set QGIS_PREFIX_PATH=%OSGEOROOT%\apps\qgis-dev\
set QGISHOME=%OSGEOROOT%\apps\qgis-dev
start python C:\qgis_s\mainwindow.py
Также пришлось поменять порядок импорта в mainwindow.py:
Код: Выделить всё
from qgis.core import *
from qgis.gui import *
from PyQt4.QtCore import QVariant
from PyQt4 import QtCore, QtGui
P.S. Win10, стоят питоны 2.7.12 + QGIS и 3.5.2