Як встановити сторонні бібліотеки python для QGIS у Windows?


18

Як я можу використовувати сторонні бібліотеки для плагінів QGIS в Windows? Я розробив плагін, який використовує rasterio і numpy для клієнта, але у нього виникають проблеми з установкою rasterio і 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, щоб включити пакети з однієї установки в іншу.

редагувати: Ця відповідь спрямована на початкове запитання щодо pip для встановлення модулів, які використовуються з QGIS у Windows. З тих пір ОП редагувало / уточнювало питання, тому ця відповідь зараз трохи широка.


3
Щоб використовувати pip в оболонці OSGeoW, я повинен був зробитиpython -m pip install wheel setuptools c:\path\to\rasterio-<ver>-win_amd64.whl
чіп

13

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

У Linux або Mac OS X (Unix-системи) QGIS використовує стандартну установку Python (незалежно від QGIS), і якщо легко встановити або модернізувати модуль Python (також існує безліч компіляторів, встановлених за замовчуванням)

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

Але для модулів, які потрібно скласти (за замовчуванням немає компілятора), це непросто. Ви можете спробувати скопіювати / вставити встановлений модуль у папку QGIS Python site_folder, але є проблеми.

Rasterio потрібно компілювати на встановленій бібліотеці GDAL, і якщо ви встановите його з неофіційних бінарних файлів Крістофа Гольке для пакунків розширення Python , наприклад, я не впевнений, що версія GDAL, використовувана QGIS, однакова (для посилань на посилання на dll-бібліотеки)

Якщо ви використовуєте виключно numpy та rasterio, чому б не незалежний сценарій?


1-е посилання не працює
nickves

виправлено, дякую, і я змінив текст для конкретної проблеми з растеріо
ген

Користувачеві потрібно було використовувати це з QGIS. Також був зламаний растровий калькулятор на QGIS, тому я не зміг безпосередньо користуватися.
Джордж Сільва

0

Зсередини консолі Qtis 2.18.28 на python 2.7.14 це працює для мене. Це дозволяє уникнути використання підказки з абсолютними шляхами пітона.

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.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.