Jak zainstalować zewnętrzne biblioteki python dla QGIS w systemie Windows?

18

Jak korzystać z bibliotek stron trzecich na wtyczkach QGIS w systemie Windows? Opracowałem wtyczkę, która używa rasterio i numpy dla klienta, ale ma on problemy z instalacją rasterio i numpy.

W rzeczywistości rasterio i numpy zostały zainstalowane w jego głównym systemie Python (C: \ Python27), ale potrzebuję QGIS Python, aby go rozpoznać.

Jak można to zrobić?

George Silva
źródło

Odpowiedzi:

23

QGIS, dystrybuowany przez OSGeo4W, zazwyczaj zawiera własną instalację Pythona i własne pakiety, które są niezależne od „zwykłej” instalacji Pythona.

Najprostszym sposobem na zainstalowanie pakietu Python w dystrybucji OSGeo4W jest otwarcie powłoki OSGeo4W i użycie pip z tego miejsca. Spowoduje to zainstalowanie pakietu w dystrybucji Python, z której korzysta QGIS, w moim przypadku znajduje się w, C:\OSGeo4W64\apps\Python27\a moduły odpowiednio w C:\OSGeo4W64\apps\Python27\Lib\site-packages. Możesz także wykonywać regularne czynności pip listw powłoce OSGeo4W i zwykłej powłoce systemu Windows (cmd.exe) i porównywać dane wyjściowe, aby zobaczyć, jakich pakietów może brakować.

Jeśli nie chcesz instalować pakietów w dwóch instalacjach Pythona, możesz również spróbować zmienić PythonPath, aby dołączał pakiety z jednej instalacji do drugiej.

edycja: Ta odpowiedź jest skierowana na pierwotne pytanie dotyczące pip do instalacji modułów do użycia z QGIS w systemie Windows. Od tego czasu OP zmodyfikowało / poprawiło pytanie, więc ta odpowiedź jest teraz nieco obszerna.

Kersten
źródło
3
Aby użyć pipa w powłoce OSGeoW, musiałem to zrobićpython -m pip install wheel setuptools c:\path\to\rasterio-<ver>-win_amd64.whl
chip
13

Numpy jest domyślnie instalowany w QGIS (wersja autonomiczna, wersja OSGeo4W). W przypadku rasterio istnieje wiele problemów. Wiem, że rasterio jest potężny i łatwy w użyciu (używam go), ale dlaczego rasterio we wtyczce QGIS, skoro masz wszystkie funkcje PyQGIS? (został zaprojektowany dla powłoki Pythona lub skryptów, nie może być używany z QGIS / PyQGIS, jak Fiona dla plików kształtów)

W systemie Linux lub Mac OS X (systemy uniksowe) QGIS korzysta ze standardowej instalacji Pythona (niezależnie od QGIS) i jeśli instalacja lub aktualizacja modułu Python jest łatwa (domyślnie instalowanych jest również wiele kompilatorów)

W systemie Windows Python nie jest instalowany domyślnie, a QGIS instaluje własną wersję. Aby zainstalować moduły czystego języka Python (bez bibliotek C, C ++), masz rozwiązania ( QGIS Standalone i moduły Python , Instalowanie setuptools Pythona w Pythonie OSGeo4W lub Instalowanie PySAL dla OSGeo4W )

Ale w przypadku modułów, które należy skompilować (domyślnie nie ma kompilatora), nie jest to łatwe. Możesz spróbować skopiować / wkleić zainstalowany moduł w folderze site_folder Python QGIS, ale występują problemy.

Rasterio musi zostać skompilowany z zainstalowaną biblioteką GDAL, a jeśli zainstalujesz ją na przykład z nieoficjalnych plików binarnych Windows Christoph Gohlke dla pakietów rozszerzeń Python , nie jestem pewien, czy wersja GDAL używana przez QGIS jest taka sama (w przypadku odniesień do biblioteki dll)

Jeśli używasz wyłącznie numpy i rasterio, dlaczego nie niezależny skrypt?

gen
źródło
Pierwszy link nie działa
nickves
poprawione, dziękuję i zmodyfikowałem tekst dla konkretnego problemu z rasterio
gen
Użytkownik musiał użyć tego z QGIS. Ponadto kalkulator rastrowy w QGIS został uszkodzony, więc nie mogłem korzystać bezpośrednio.
George Silva,
0

Z poziomu konsoli Python 2.7.14 w Qgis 2.18.28 działa to dla mnie. Pozwala to uniknąć konieczności używania monitów z bezwzględnymi ścieżkami w języku Python.

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

Według twórców pipa pip.main lub pip._internal.main nie są obsługiwane. https://pip.pypa.io/en/stable/user_guide/#using-pip-from-your-program Zmodyfikowałem zalecany sys.executable na 'python', ponieważ w Qgis jest to sam qgis.

Pietro Tou
źródło