Как установить сторонние библиотеки Python для QGIS в Windows?

18

Как я могу использовать сторонние библиотеки на плагинах QGIS в Windows? Я разработал плагин, который использует растерио и numpy для клиента, но у него возникают проблемы с установкой растерио и numpy.

На самом деле растерио и numpy были установлены в основной системе Python (C: \ Python27), но мне нужен QGIS Python для его распознавания.

Как это можно сделать?

Джордж Сильва
источник

Ответы:

23

QGIS, распространяемый OSGeo4W, обычно поставляется с собственной установкой Python и собственными пакетами, независимыми от вашей "обычной" установки Python.

Самый простой способ установить пакет Python в дистрибутив OSGeo4W - это открыть оболочку OSGeo4W и использовать оттуда pip. Это установит пакет в дистрибутив Python, который использует QGIS, в моем случае - в, C:\OSGeo4W64\apps\Python27\а модули - в C:\OSGeo4W64\apps\Python27\Lib\site-packages. Вы также можете делать обычные pip listвнутри оболочки OSGeo4W и вашей обычной оболочки Windows (cmd.exe) и сравнивать результаты, чтобы увидеть, какие пакеты вы можете пропустить.

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

edit: Этот ответ направлен на оригинальный вопрос, касающийся pip для установки модулей, которые будут использоваться с QGIS в Windows. ОП с тех пор отредактировал / уточнил вопрос, так что этот ответ теперь немного широк.

Керстен
источник
3
Чтобы использовать pip в оболочке OSGeoW, я должен был это сделатьpython -m pip install wheel setuptools c:\path\to\rasterio-<ver>-win_amd64.whl
чип
13

Numpy по умолчанию устанавливается в QGIS (автономная версия, версия OSGeo4W). Для растерио много проблем. Я знаю, что растерио является мощным и простым в использовании (я его использую), но зачем растерио в плагине QGIS, когда у вас есть все функции PyQGIS? (он был разработан для оболочки Python или для скриптов, не должен использоваться с QGIS / PyQGIS, как Fiona для шейп-файлов)

В Linux или Mac OS X (системы Unix) QGIS использует стандартную установку Python (независимо от QGIS) и, если легко установить или обновить модуль Python (по умолчанию также установлено много компиляторов)

В Windows Python по умолчанию не устанавливается, а QGIS устанавливает свою собственную версию. Для установки чистых модулей Python (без библиотек C, C ++) у вас есть решения ( автономный QGIS и модули Python , установка установочных инструментов Python в OSGeo4W Python или установка PySAL для OSGeo4W )

Но для модулей, которые должны быть скомпилированы (по умолчанию компилятор отсутствует), это нелегко. Вы можете попробовать скопировать / вставить ваш установленный модуль в папку сайта QGIS Python, но есть проблемы.

Растерио необходимо скомпилировать с установленной библиотекой GDAL, и если вы устанавливаете ее, например, из неофициальных бинарных файлов Windows от Christoph Gohlke для пакетов расширения Python , я не уверен, что версия GDAL, используемая QGIS, одинакова (для ссылок на библиотеки dll)

Если вы используете исключительно NumPy и Rasterio, почему бы не независимый сценарий?

ген
источник
1-я ссылка не работает
nickves
исправил, спасибо, и я изменил текст для конкретной проблемы растерио
ген
Пользователю нужно было использовать это из QGIS. Кроме того, растровый калькулятор на QGIS был сломан, поэтому я не мог использовать напрямую.
Джордж Сильва
0

В консоли Python 2.7.14 Qgis 2.18.28 это работает для меня. Это позволяет избежать необходимости использовать приглашения с абсолютными путями Python.

import subprocess
subprocess.check_call(['python', '-m', 'pip', 'install', 'openpyxl'])

По словам разработчиков pip, pip.main или pip._internal.main не поддерживаются. https://pip.pypa.io/en/stable/user_guide/#using-pip-from-your-program Я изменил рекомендуемый sys.executable на «python», потому что в Qgis это сам qgis.

Пьетро Тоу
источник