Qgis поддержка python выключена параметры модулей недоступны windows 7
Модули - это отличный способ расширить функциональность QGIS. Вы можете создавать модули на Python, от добавления простой кнопки до сложных наборов инструментов. Этот урок в общих чертах покажет процесс, связанный с настройкой среды разработки, проектированием пользовательского интерфейса для модуля и написанием кода для взаимодействия с QGIS. Пожалуйста, просмотрите урок Первые шаги в программировании на Python , чтобы ознакомиться с основами.
Обзор задачи¶
Мы разработаем простой модуль под названием Save Attributes , который позволит пользователям выбрать векторный слой и записать его атрибуты в CSV-файл.
Получение инструментов¶
Qt Creator¶
Qt это фреймворк для разработки программного обеспечения, который используется для разработки приложений, работающих на Windows, Mac, Linux, а также на различных мобильных операционных системах. Сам QGIS написан с использованием Qt. Для разработки модулей мы будем использовать приложение под названием Qt Creator, чтобы разработать интерфейс для нашего модуля.
Загрузите и установите приложение Qt Creator с SourgeForge
Связки Python для Qt¶
Так как мы разрабатываем модуль на Python, нам необходимо установить расширение Python для Qt. Способ его установки будут зависеть от платформы, которую вы используете. Для создания модулей нам нужен инструмент командной строки pyrcc4 .
Windows
Скачайте установочный файл OSGeo4W и выберите Express Desktop Install . Установите пакет QGIS . После установки вы сможете получить доступ к инструменту pyrcc4 через OSGeo4W Shell .
Mac
Установите менеджер пакетов Homebrew . Установите пакет PyQt , выполнив следующую команду:
Linux
В зависимости от вашего дистрибутива, найдите и установите пакет python-qt4 . В дистрибутивах, основанных на Ubuntu и Debian, вы можете запустить следующую команду:
Текстовый редактор или интегрированная среда разработки Python¶
Any kind of software development requires a good text editor. If you already have a favorite text editor or an IDE (Integrated Development Environment), you may use it for this tutorial. Otherwise, each platform offers a wide variety of free or paid options for text editors. Choose the one that fits your needs.
В этом уроке используется редактор Notepad ++ на Windows.
Windows
Notepad++ - это хороший бесплатный редактор для Windows. Скачайте и установите редактор Notepad++.
Если вы используете Notepad++, убедитесь, что отмечена настройка Replace by space в меню Settings ‣ Preferences ‣ Tab Settings . Python очень чувствителен к пробелам, и эта настройка гарантирует, что табуляции и пробелы обрабатываются корректно.
Модуль Plugin Builder¶
There is a helpful QGIS plugin named Plugin Builder which creates all the necessary files and the boilerplate code for a plugin. Find and install the Plugin Builder plugin. See Использование модулей расширения for more details on how to install plugins.
Модуль Plugins Reloader¶
Это еще один полезный модуль, который позволяет разрабатывать модули итеративно. Используя этот модуль, вы можете изменять код своего модуля, и перемены будут отражены в QGIS без необходимости перезагружать QGIS каждый раз. Найдите и установите модуль Plugin Reloader . Подробнее об установке модулей можно прочитать тут: Использование модулей расширения .
Plugin Reloader является экспериментальным модулем. Убедитесь, что вы отметили галочкой опцию Show also experimental plugins в настройках Plugin Manager , если вы не можете его найти.
Методика¶
Откройте QGIS. Перейдите к меню Plugins ‣ Plugin Builder ‣ Plugin Builder .
Вы увидите диалоговое окно QGIS Plugin Builder с формой. Вы можете заполнить форму, указав детали, касающиеся нашего модуля. В поле Class name нужно указать имя класса Python, содержащего логику модуля. Это также будет имя папки, содержащей все файлы модуля. Введите строку SaveAttributes в качестве имени класса. Plugin name - это имя, под которым ваш плагин появится в меню Plugin Manager . Введите `` Save Attributes``. Добавьте описание в поле Description . Module name - это имя основного файла Python для модуля. Укажите его как safe_attributes . Оставьте номер версии без изменения. Строка Text for menu item указывает, как пользователи будут видеть ваш плагин в меню QGIS. Введите Save Attributes as CSV . Введите свое имя и адрес электронной почты в соответствующих полях. Поле Menu показывает, в какое меню QGIS будет добавлен ваш модуль. Так как наш плагин предназначен для векторных данных, выберите Vector . Отметьте галочкой поле Flag the plugin as experimental в нижней части. Нажмите OK .
Далее вам будет предложено выбрать каталог для вашего модуля. Вы должны перейти к папке модулей QGIS на вашем компьютере и нажать Select Folder . Как правило, папка .qgis2/ находится в вашей домашнем каталоге. Местоположение папки plugin будет зависеть от вашей платформы следующим образом: (Замените username на ваше имя пользователя)
С самого начала, QGIS была разработана на архитектуре с поддержкой различных модулей, которые позволяют легко добавлять множество новых возможностей или функций в приложение. Большинство функций в QGIS реализованы как основные или внешние модули.
Основные модули разрабатываются командой разработчиков QGIS и автоматически входят в каждый новый релиз программы. Написаны они на языках программирования C++ и Python. Более подробная информация об основных модулях приведена в разделе Использование модулей ядра QGIS
Все Внешние модули в настоящее время написаны на языке Python. Они находятся во внешних репозиториях и поддерживаются написавшими их авторами. Внешние модули могут быть добавлены с помощью функции Установка модулей QGIS. Более подробная информация о внешних модулях приводится в разделе Загрузка внешних модулей QGIS.
Управление модулями¶
Управление модулями подразумевает их загрузку или выгрузку с помощью Менеджера модулей. Внешние модули могут быть установлены, активированы или удалены с помошью Установщика модулей QGIS. Также Менеджер модулей можно использовать для повторного отключения/подключения внешних модулей.
Загрузка основных модулей QGIS¶
Загрузка основных модулей QGIS осуществляется из главного меню Модули ‣ Управление модулями. .
Figure Plugins 1:
Plugin Manager
Менеджер модулей содержит список всех доступных модулей, включая основные и внешние, и их статус (загружен или нет). Активируются модули автоматически с помощью установки флажка на соответствующем модуле (см. раздел Загрузка внешних модулей QGIS). Флажок напротив названий активированных модулей уже установлен. На рисунке Figure_plugins_1 показано диалоговое окно Менеджера модулей.
Для включения модуля достаточно установить флажок слева от его названия и нажать кнопку [OK]. При выходе из приложения список загруженных модулей сохраняется и будет автоматически загружен при следующем запуске QGIS.
Повреждённые модули
Если QGIS перестает загружаться, то, возможно, виноват повреждённый модуль. Можно остановить загрузку модулей, отредактировав файл настройки (см. раздел Параметры). Найдите в файле раздел с настройками модулей и измените значение модулей на «false», чтобы они не загружались при запуске QGIS.
Например, чтобы прекратить загрузку модуля «Текст с разделителями», нужно отредактировать файл $HOME/.config/QuantumGIS/qgis.conf следующим образом: Add Delimited Text Layer=false .
Данное действие нужно повторить для каждого модуля в секции [Plugins]. После этого можно запускать QGIS, и через Менеджер модулей добавлять модули по одному, чтобы узнать, который из них является причиной проблемы.
Загрузка внешних модулей QGIS¶
Внешние модули QGIS написаны на языке программирования Python. Они находятся либо в «официальном» репозитории либо в репозиториях, поддерживаемых отдельными авторами. «Официальный» репозиторий доступен по умолчанию в Установщике расширений из меню Модули ‣ Загрузить модули. .
Подробная документация, минимальная версия QGIS, домашняя страница, авторы и другая важная информация распространяется вместе с внешними расширениями и не включена в это руководство.
Обновления для расширений ядра могут поставляться через этот репозиторий как оверлеи.
В настоящее время в «официальном» репозитории QGIS находится свыше 150 различных модулей. Некоторые модули предназначены для широкого круга пользователей (например, предоставляют возможность просматривать и редактировать данные OpenStreetMap или добавлять на карту слои Google Maps), в то время как другие предназначены для решения специализированных задач (например, расчет оптимального диаметра труб сетей водоснабжения с учетом различных факторов).
Поиск нужного модуля облегчается путем фильтрации по ключевым словам, репозиторию и статусу модуля (установлен/не установлен). Все это есть в Менеджере модулей (см. рисунок figure_plugins_2).
Добавление репозиториев
Чтобы добавить внешние авторские репозитории, откройте «Установщик модулей» (Модули ‣ Загрузить модули. ), перейдите на вкладку Репозитории и нажмите [Добавить. ]. Если некоторые из добавленных репозиториев вам не нужны, они могут быть отключены кнопкой [Изменить. ] или полностью удалены нажатием на кнопку [Удалить].
Для загрузки внешних модулей нужно выполнить всего один шаг:
Использование Установщика модулей QGIS¶
Для загрузки и установки внешних модулей нужно выбрать меню Модули ‣ Загрузить модули. . Появится окно Установка модулей QGIS (рисунок figure_plugins_2) со вкладкой Модули, в которой отображается список всех установленных модулей, а также список доступных для загрузки внешних модулей.
Figure Plugins 2:
Installing external python plugins
Рядом с каждым модулем указан его статус:
Вкладка Модули
Для установки модуля необходимо выбрать его из списка и нажать кнопку [Установить модуль]. Он будет активирован и установлен в соответствующую директорию.
Linux и * NIX-подобные системы
- /share/qgis/python/plugins
- $HOME/.qgis/python/plugins
- /Contents/MacOS/share/qgis/python/plugins
- /Users/$USERNAME/.qgis/python/plugins
- C:\Program Files\QGIS\python\plugins
- C:\Documents and Settings\$USERNAME\.qgis\python\plugins
Если используется прокси-сервер, нужно его настроить: Правка ‣ Параметры (Gnome, OS X) или Настройки ‣ Параметры (KDE, Windows) вкладка Сеть.
Кнопка [Удалить модуль] доступна для установленного модуля при условии, что он не является основным. Обратите внимание, что если включено обновление основных модулей, то можно удалить последнее обновление кнопкой [Удалить модуль] и вернуться к предыдущей версии, поставляемой с QGIS. При этом версию, входящая в состав QGIS удалить нельзя.
Репозитории
Вкладка Репозитории содержит список источников для новых модулей. По умолчанию включен только официальный репозиторий QGIS. Также можно добавить и другие репозитории, воспользовавшись кнопкой [Добавить. ]. Сторонние репозитории содержат большое количество полезных модулей, но не поддерживаются командой разработчиков QGIS. Соответственно, мы не можем отвечать за их качество и состояние. Также можно вручную управлять списком репозиториев, добавляя, удаляя и редактируя записи. Временно отключить репозиторий можно, нажав на кнопку [Изменить. ] и сняв флажок Активен.
Параметры
Кроме того, можно указать тип модулей, которые будут отображатся в Установщике модулей. В группе Разрешенные модули можно указать:
Показывать модули только из официального репозитория
Показывать все модули, кроме помеченных как экспериментальные
Показывать все модули, включая помеченные как экспериментальные
Использование экспериментальных модулей
Экспериментальные модули, как правило, непригодны для использования в работе. Эти модули находятся на ранних стадиях разработки и могут рассмотриваться как «неполные» или «демонстрационные». Такие модули не рекомендуется использовать в работе за исключением тестирования.
Провайдеры данных¶
Провайдеры (поставщики) данных являются «специальными» модулями для предоставления доступа к базам данных. По умолчанию, QGIS поддерживает слои PostGIS и базы данных, основанных на библиотеках GDAL/OGR. Эти модули позволяют расширять список поддерживаемых данных QGIS.
Модули провайдеров данных подключаются автоматически при каждом запуске QGIS. Они не управляются из Менеджера модулей и включаются тогда, когда слой добавляется в QGIS.
Я с завидной регулярностью сталкиваюсь со всевозможными ошибками, так или иначе связанными с модулями Python. Существует огромное количество разнообразных модулей Python, которые разработчики активно используют, но далеко не всегда заботятся об установке зависимостей. Некоторые даже не удосуживаются их документировать. Параллельно существует две мажорные версии Python: 2 и 3. В разных дистрибутивах отдано предпочтение одной или другой версии, по этой причине самостоятельно установленную программу в зависимости от дистрибутива нужно при запуске предварять python или python2/python3. Например:
Причём обычно не происходит никаких проверок и угадали ли вы с выбором версии или нет вы узнаете только при появлении первых ошибок, вызванных неправильным синтаксисом программного кода для данной версии.
Также прибавляет путаницу то, что модули можно установить как из стандартного репозитория дистрибутивов, так и с помощью pip (инструмент для установки пакетов Python).
Цель этой заметки — рассмотреть некоторые характерные проблемы модулей Python. Все возможные ошибки вряд ли удастся охватить, но описанное здесь должно помочь понять, в каком примерно направлении двигаться.
Отсутствие модуля Python
Большинство ошибок модулей Python начинаются со строк:
В них трудно разобраться, поэтому поищите фразы вида:
- ModuleNotFoundError: No module named
- No module named
- ImportError: No module named
За ними следует название модуля.
Поищите по указанному имени в системном репозитории, или попробуйте установить командой вида:
Пакет Python установлен, но программа его не видит
Причина может быть в том, что вы установили модуль для другой версии. Например, программа написана на Python3, а вы установили модуль с этим же названием, но написанный на Python2. В этом случае он не будет существовать для программы. Поэтому нужно правильно указывать номер версии.
Команда pip также имеет свои две версии: pip2 и pip3. Если версия не указана, то это означает, что используется какая-то из двух указанных (2 или 3) версий, которая является основной в системе. Например, сейчас в Debian и производных по умолчанию основной версией Python является вторая. Поэтому в репозитории есть два пакета: python-pip (вторая версия) и python3-pip (третья).
В Arch Linux и производных по умолчанию основной версией является третья, поэтому в репозиториях присутствует пакет python-pip (третья версия) и python2-pip (вторая).
Это же самое относится к пакетам Python и самому Python: если версия не указана, значит имеется ввиду основная для вашего дистрибутива версия. По этой причине многие пакеты в репозитории присутствуют с двумя очень похожими названиями.
Установлена новая версия модуля, но программа видит старую версию
Я несколько раз сталкивался с подобными необъяснимыми ошибками.
Иногда помогает удаление модуля командой вида:
Также попробуйте удалить его используя системный менеджер пакетов.
Если модуль вам нужен, попробуйте вновь установить его и проверьте, решило ли это проблему.
Если проблема не решена, то удалите все файлы модуля, обычно они расположены в папках вида:
- /usr/lib/python2.7/site-packages/модуль
- /usr/lib/python3.7/site-packages/модуль
Ошибки, в которых присутствует слово AttributeError, NoneType, object has no attribute обычно вызваны не отсутствием модуля, а тем, что модуль не получил ожидаемого аргумента, либо получил неправильное число аргументов. Было бы правильнее сказать, что ошибка вызвана недостаточной проверкой данных и отсутствием перехвата исключений (то есть программа плохо написана).
В этих случаях обычно ничего не требуется дополнительно устанавливать. В моей практике частыми случаями таких ошибок является обращение программы к определённому сайту, но сайт может быть недоступен, либо API ключ больше недействителен, либо программа не получила ожидаемые данные по другим причинам. Также программа может обращаться к другой программе, но из-за ошибки в ней получит не тот результат, который ожидала, и уже это вызывает приведённые выше ошибки, которые мы видим.
Опять же, хорошо написанная программа в этом случае должна вернуть что-то вроде «информация не загружена», «работа программы N завершилась ошибкой» и так далее. Как правило, нужно разбираться с причиной самой первой проблемы или обращаться к разработчику.
Модуль установлен, но при обновлении или обращении к нему появляется ошибки
Это самая экзотическая ошибка, которая вызвана, видимо, повреждением файлов пакета. К примеру, при попытке обновления я получал ошибку:
При этом сам модуль установлен как следует из самой первой строки.
Проблема может решиться удалением всех файлов пакета (с помощью rm) и затем повторной установки.
К примеру в рассматриваемом случае, удаление:
После этого проблема с модулем исчезла.
Заключение
Пожалуй, это далеко не полный «справочник ошибок Python», но если вы можете сориентироваться, какого рода ошибка у вас возникла:
- отсутствует модуль
- модуль неправильной версии
- модуль повреждён
- внешняя причина — программа не получила ожидаемые данные
Так вот, если вы хотя бы примерно поняли главную причину, то вам будет проще понять, в каком направлении двигаться для её решения.
Модули - это отличный способ расширить функциональность QGIS. Вы можете создавать модули на Python, от добавления простой кнопки до сложных наборов инструментов. Этот урок в общих чертах покажет процесс, связанный с настройкой среды разработки, проектированием пользовательского интерфейса для модуля и написанием кода для взаимодействия с QGIS. Пожалуйста, просмотрите урок Первые шаги в программировании на Python , чтобы ознакомиться с основами.
Обзор задачи¶
Мы разработаем простой модуль под названием Save Attributes , который позволит пользователям выбрать векторный слой и записать его атрибуты в CSV-файл.
Получение инструментов¶
Qt Creator¶
Qt это фреймворк для разработки программного обеспечения, который используется для разработки приложений, работающих на Windows, Mac, Linux, а также на различных мобильных операционных системах. Сам QGIS написан с использованием Qt. Для разработки модулей мы будем использовать приложение под названием Qt Creator, чтобы разработать интерфейс для нашего модуля.
Загрузите и установите приложение Qt Creator с SourgeForge
Связки Python для Qt¶
Так как мы разрабатываем модуль на Python, нам необходимо установить расширение Python для Qt. Способ его установки будут зависеть от платформы, которую вы используете. Для создания модулей нам нужен инструмент командной строки pyrcc4 .
Windows
Скачайте установочный файл OSGeo4W и выберите Express Desktop Install . Установите пакет QGIS . После установки вы сможете получить доступ к инструменту pyrcc4 через OSGeo4W Shell .
Mac
Установите менеджер пакетов Homebrew . Установите пакет PyQt , выполнив следующую команду:
Linux
В зависимости от вашего дистрибутива, найдите и установите пакет python-qt4 . В дистрибутивах, основанных на Ubuntu и Debian, вы можете запустить следующую команду:
Текстовый редактор или интегрированная среда разработки Python¶
Any kind of software development requires a good text editor. If you already have a favorite text editor or an IDE (Integrated Development Environment), you may use it for this tutorial. Otherwise, each platform offers a wide variety of free or paid options for text editors. Choose the one that fits your needs.
В этом уроке используется редактор Notepad ++ на Windows.
Windows
Notepad++ - это хороший бесплатный редактор для Windows. Скачайте и установите редактор Notepad++.
Если вы используете Notepad++, убедитесь, что отмечена настройка Replace by space в меню Settings ‣ Preferences ‣ Tab Settings . Python очень чувствителен к пробелам, и эта настройка гарантирует, что табуляции и пробелы обрабатываются корректно.
Модуль Plugin Builder¶
There is a helpful QGIS plugin named Plugin Builder which creates all the necessary files and the boilerplate code for a plugin. Find and install the Plugin Builder plugin. See Использование модулей расширения for more details on how to install plugins.
Модуль Plugins Reloader¶
Это еще один полезный модуль, который позволяет разрабатывать модули итеративно. Используя этот модуль, вы можете изменять код своего модуля, и перемены будут отражены в QGIS без необходимости перезагружать QGIS каждый раз. Найдите и установите модуль Plugin Reloader . Подробнее об установке модулей можно прочитать тут: Использование модулей расширения .
Plugin Reloader является экспериментальным модулем. Убедитесь, что вы отметили галочкой опцию Show also experimental plugins в настройках Plugin Manager , если вы не можете его найти.
Методика¶
Откройте QGIS. Перейдите к меню Plugins ‣ Plugin Builder ‣ Plugin Builder .
Вы увидите диалоговое окно QGIS Plugin Builder с формой. Вы можете заполнить форму, указав детали, касающиеся нашего модуля. В поле Class name нужно указать имя класса Python, содержащего логику модуля. Это также будет имя папки, содержащей все файлы модуля. Введите строку SaveAttributes в качестве имени класса. Plugin name - это имя, под которым ваш плагин появится в меню Plugin Manager . Введите `` Save Attributes``. Добавьте описание в поле Description . Module name - это имя основного файла Python для модуля. Укажите его как safe_attributes . Оставьте номер версии без изменения. Строка Text for menu item указывает, как пользователи будут видеть ваш плагин в меню QGIS. Введите Save Attributes as CSV . Введите свое имя и адрес электронной почты в соответствующих полях. Поле Menu показывает, в какое меню QGIS будет добавлен ваш модуль. Так как наш плагин предназначен для векторных данных, выберите Vector . Отметьте галочкой поле Flag the plugin as experimental в нижней части. Нажмите OK .
Далее вам будет предложено выбрать каталог для вашего модуля. Вы должны перейти к папке модулей QGIS на вашем компьютере и нажать Select Folder . Как правило, папка .qgis2/ находится в вашей домашнем каталоге. Местоположение папки plugin будет зависеть от вашей платформы следующим образом: (Замените username на ваше имя пользователя)
Читайте также: