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ć.
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.
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)
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.
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.
python -m pip install wheel setuptools c:\path\to\rasterio-<ver>-win_amd64.whl
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?
źródło
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.
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.
źródło