Come installare librerie Python di terze parti per QGIS su Windows?


18

Come posso usare librerie di terze parti sui plugin QGIS su Windows? Ho sviluppato un plug-in che utilizza rasterio e numpy per un cliente, ma ha problemi con l'installazione di rasterio e numpy.

In realtà rasterio e numpy sono stati installati nel suo sistema principale Python (C: \ Python27), ma ho bisogno di QGIS Python per riconoscerlo.

Come si può fare?

Risposte:


23

QGIS, come distribuito da OSGeo4W, di solito viene fornito con la propria installazione Python e i propri pacchetti indipendenti dalla propria "normale" installazione Python.

Il modo più semplice per installare un pacchetto Python nella distribuzione OSGeo4W è aprire la shell OSGeo4W e usare pip da lì. Ciò installerà il pacchetto nella distribuzione di Python utilizzata da QGIS, nel mio caso situato in C:\OSGeo4W64\apps\Python27\e i moduli di conseguenza in C:\OSGeo4W64\apps\Python27\Lib\site-packages. Puoi anche fare un regolare pip listall'interno della shell OSGeo4W e della tua normale shell di Windows (cmd.exe) e confrontare gli output per vedere quali pacchetti potresti perdere.

Se non si desidera installare pacchetti in due installazioni Python, è possibile provare anche a modificare PythonPath per includere i pacchetti da un'installazione all'altra.

modifica: questa risposta è rivolta alla domanda originale relativa a pip per installare i moduli da utilizzare con QGIS in Windows. Da allora OP ha modificato / perfezionato la domanda, quindi questa risposta è ora un po 'ampia.


3
Per usare pip nella shell OSGeoW ho dovuto farepython -m pip install wheel setuptools c:\path\to\rasterio-<ver>-win_amd64.whl
— chip

13

Numpy è installato di default in QGIS (versione standalone, versione OSGeo4W). Per rasterio , ci sono molti problemi. So che rasterio è potente e facile da usare (lo uso) ma perché rasterio in un plugin QGIS mentre hai tutte le funzioni di PyQGIS? (è stato progettato per la shell Python o per gli script, da non usare con QGIS / PyQGIS, come Fiona per gli shapefile)

In Linux o Mac OS X (sistemi Unix), QGIS utilizza l'installazione standard di Python (indipendente da QGIS) e se è facile installare o aggiornare un modulo Python (ci sono anche molti compilatori installati per impostazione predefinita)

In Windows, Python non è installato per impostazione predefinita e QGIS installa la propria versione. Per installare moduli Python puri (senza librerie C, C ++) hai soluzioni ( QGIS Standalone e i moduli Python , Installazione degli strumenti di configurazione di Python in OSGeo4W Python o Installazione di PySAL per OSGeo4W )

Ma per i moduli che devono essere compilati (nessun compilatore per impostazione predefinita), non è facile. Puoi provare a copiare / incollare il modulo installato nella cartella del sito QGIS Python ma ci sono problemi.

Rasterio deve essere compilato su una libreria GDAL installata e se lo si installa da binari di Windows non ufficiali di Christoph Gohlke per i pacchetti di estensione Python , ad esempio, non sono sicuro che la versione di GDAL utilizzata da QGIS sia la stessa (per i riferimenti al librerie dll)

Se usi esclusivamente numpy e rasterio, perché non uno script indipendente?


Il 1 ° link non funziona
— nickname

corretto, grazie e ho modificato il testo per il problema specifico di rasterio
— gene

L'utente doveva usarlo da QGIS. Inoltre, il calcolatore raster su QGIS era rotto, quindi non sono stato in grado di utilizzarlo direttamente.
— George Silva,

0

Dall'interno della console python 2.7.14 di Qgis 2.18.28, questo funziona per me. Evita di dover usare i prompt con percorsi assoluti di Python.

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

Secondo gli sviluppatori pip, pip.main o pip._internal.main non sono supportati. https://pip.pypa.io/en/stable/user_guide/#using-pip-from-your-program Ho modificato il sys.executable raccomandato in 'python', perché in Qgis è qgis stesso.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.