Comment installer des bibliothèques python tierces pour QGIS sous Windows?

18

Comment puis-je utiliser des bibliothèques tierces sur des plugins QGIS sous Windows? J'ai développé un plugin qui utilise rasterio et numpy pour un client, mais il a des problèmes pour installer rasterio et numpy.

En fait, rasterio et numpy ont été installés dans son système principal Python (C: \ Python27), mais j'ai besoin de QGIS Python pour le reconnaître.

Comment ceci peut être fait?

George Silva
la source

Réponses:

23

QGIS, tel que distribué par OSGeo4W, est généralement livré avec sa propre installation Python et ses propres packages qui sont indépendants de votre installation Python "régulière".

La façon la plus simple d'installer un package Python dans la distribution OSGeo4W est d'ouvrir le shell OSGeo4W et d'utiliser pip à partir de là. Cela installera le package dans la distribution Python utilisée par QGIS, dans mon cas situé à C:\OSGeo4W64\apps\Python27\et les modules en conséquence à C:\OSGeo4W64\apps\Python27\Lib\site-packages. Vous pouvez également effectuer une opération régulière pip listà l'intérieur du shell OSGeo4W et de votre shell Windows standard (cmd.exe) et comparer les sorties pour voir les packages qui pourraient vous manquer.

Si vous ne souhaitez pas installer de packages dans deux installations Python, vous pouvez également essayer de modifier PythonPath pour inclure les packages d'une installation dans l'autre.

edit: Cette réponse est dirigée vers la question d'origine concernant pip pour installer les modules à utiliser avec QGIS sous Windows. OP a depuis modifié / affiné la question, donc cette réponse est un peu large maintenant.

Kersten
la source
3
Pour utiliser pip dans le shell OSGeoW, je devais le fairepython -m pip install wheel setuptools c:\path\to\rasterio-<ver>-win_amd64.whl
puce
13

Numpy est installé par défaut dans QGIS (version autonome, version OSGeo4W). Pour rasterio , il y a beaucoup de problèmes. Je sais que rasterio est puissant et facile à utiliser (je l'utilise) mais pourquoi rasterio dans un plugin QGIS alors que vous avez toutes les fonctions de PyQGIS? (il a été conçu pour le shell Python ou pour les scripts, ne pas utiliser avec QGIS / PyQGIS, comme Fiona pour les fichiers de formes)

Sous Linux ou Mac OS X (systèmes Unix), QGIS utilise l'installation Python standard (indépendante de QGIS) et s'il est facile d'installer ou de mettre à niveau un module Python (il existe également de nombreux compilateurs installés par défaut)

Sous Windows, Python n'est pas installé par défaut et QGIS installe sa propre version. Pour installer des modules Python purs (sans bibliothèques C, C ++), vous avez des solutions ( QGIS Standalone et les modules Python , Installation de setuptools Python dans OSGeo4W Python ou Installation de PySAL pour OSGeo4W )

Mais pour les modules qui doivent être compilés (pas de compilateur par défaut), ce n'est pas facile. Vous pouvez essayer de copier / coller votre module installé dans le dossier site QGIS Python mais il y a des problèmes.

Rasterio doit être compilé avec une bibliothèque GDAL installée et si vous l'installez à partir des fichiers binaires non officiels de Christoph Gohlke Windows pour les packages d'extension Python , par exemple, je ne suis pas sûr que la version de GDAL utilisée par QGIS soit la même (pour les références à la bibliothèques dll)

Si vous utilisez exclusivement numpy et rasterio, pourquoi pas un script indépendant?

gène
la source
Le premier lien ne fonctionne pas
nickves
corrigé, merci et j'ai modifié le texte pour le problème spécifique de rasterio
gène
L'utilisateur devait l'utiliser à partir de QGIS. De plus, la calculatrice raster sur QGIS était cassée, donc je n'ai pas pu l'utiliser directement.
George Silva
0

À partir de la console python 2.7.14 de Qgis 2.18.28, cela fonctionne pour moi. Cela évite d'avoir à utiliser des invites avec des chemins python absolus.

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

Selon les développeurs de pip, pip.main ou pip._internal.main ne sont pas pris en charge. https://pip.pypa.io/en/stable/user_guide/#using-pip-from-your-program J'ai modifié le fichier sys.executable recommandé en 'python', car dans Qgis c'est qgis lui-même.

Pietro Tou
la source