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.