¿Cómo instalar bibliotecas python de terceros para QGIS en Windows?

18

¿Cómo puedo usar bibliotecas de terceros en complementos QGIS en Windows? Desarrollé un complemento que usa rasterio y numpy para un cliente, pero está teniendo problemas para instalar rasterio y numpy.

En realidad, rasterio y numpy se instalaron en su sistema principal Python (C: \ Python27), pero necesito QGIS Python para reconocerlo.

¿Cómo puede hacerse esto?

George Silva
fuente

Respuestas:

23

QGIS, tal como lo distribuye OSGeo4W, generalmente viene con su propia instalación de Python y sus propios paquetes que son independientes de su instalación "normal" de Python.

La forma más fácil de instalar un paquete de Python en la distribución OSGeo4W es abrir el Shell OSGeo4W y usar pip desde allí. Esto instalará el paquete en la distribución Python que usa QGIS, en mi caso ubicado en C:\OSGeo4W64\apps\Python27\y los módulos en consecuencia en C:\OSGeo4W64\apps\Python27\Lib\site-packages. También puede hacer una rutinapip list dentro del OSGeo4W Shell y su Windows Shell habitual (cmd.exe) y comparar las salidas para ver qué paquetes le pueden faltar.

Si no desea instalar paquetes en dos instalaciones de Python, también puede intentar cambiar PythonPath para incluir paquetes de una instalación a otra.

editar: esta respuesta está dirigida a la pregunta original sobre pip para instalar módulos que se utilizarán con QGIS en Windows. Desde entonces, OP ha editado / refinado la pregunta, por lo que esta respuesta es un poco amplia ahora.

Kersten
fuente
3
Para usar pip en OSGeoW shell tuve que hacerpython -m pip install wheel setuptools c:\path\to\rasterio-<ver>-win_amd64.whl
chip
13

Numpy se instala de manera predeterminada en QGIS (versión independiente, versión OSGeo4W). Para rasterio , hay muchos problemas. Sé que rasterio es potente y fácil de usar (lo uso), pero ¿por qué rasterio en un complemento QGIS mientras tiene todas las funciones de PyQGIS? (fue diseñado para el shell Python o para los scripts, no para ser usado con QGIS / PyQGIS, como Fiona para los archivos de forma)

En Linux o Mac OS X (sistemas Unix), QGIS utiliza la instalación estándar de Python (independiente de QGIS) y si es fácil de instalar o actualizar un módulo de Python (también hay muchos compiladores instalados por defecto)

En Windows, Python no está instalado de manera predeterminada y QGIS instala su propia versión. Para instalar módulos Python puros (sin bibliotecas C, C ++) tiene soluciones ( QGIS Standalone y los módulos Python , instalación de herramientas de configuración de Python en OSGeo4W Python o instalación de PySAL para OSGeo4W )

Pero para los módulos que deben compilarse (sin compilador por defecto), no es fácil. Puede intentar copiar / pegar su módulo instalado en la carpeta de sitio QGIS Python, pero hay problemas.

Rasterio necesita compilarse contra una biblioteca GDAL instalada y si la instala desde Christoph Gohlke Binarios no oficiales de Windows para paquetes de extensión de Python , por ejemplo, no estoy seguro de que la versión de GDAL utilizada por QGIS sea la misma (para las referencias a bibliotecas dll)

Si usa exclusivamente numpy y rasterio, ¿por qué no un script independiente?

gene
fuente
El primer enlace no funciona
nickves
corregido, gracias y modifiqué el texto para el problema rasterio específico
gen
El usuario necesitaba usar esto desde QGIS. Además, la calculadora ráster en QGIS estaba rota, por lo que no pude usarla directamente.
George Silva
0

Desde la consola Python 2.7.14 de Qgis 2.18.28, esto funciona para mí. Evita tener que usar mensajes con rutas de Python absolutas.

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

Según los desarrolladores de pip, pip.main o pip._internal.main no son compatibles. https://pip.pypa.io/en/stable/user_guide/#using-pip-from-your-program Modifiqué el sys.executable recomendado a 'python', porque en Qgis es qgis en sí.

Pietro Tou
fuente