Nota: Para este tutorial se ha empleado Windows 10 Pro y QGIS 3.10.1 ‘A Coruña’.
En esta pequeña entrada vamos a ver como instalar paquetes adicionales de Python en QGIS.
Cuántas veces nos ha ocurrido que hemos descargado un plugin y nos ha saltado algún error como este:
En este caso nos dice, “ModuleNotFoundError: No module named ‘scipy‘”. ¡Vaya!, este plugin tiene esta dependencia o más y no las autoinstala, bueno no pasa nada, ojalá todos los problemas sean como este.
Lo primero que debemos hacer es ir al repositorio del plugin y ver si nos explica qué hacer, en este caso voy a usar de ejemplo un plugin de los colegas de PANOimagen “batch_hillshader” el cual está en la sección de complementos y en GitHub.
Si entramos en el README.md del proyecto vemos que nos informan de que tiene unas dependencias, las cuales son:
• Numpy
• Scipy
• Laspy
Perfecto, son 3 los paquetes adicionales, así que vamos a emplear un método de instalación para cada uno.
1 método: Desde la consola de QGIS:
Este método es muy sencillo, simplemente abrimos la consola de QGIS y escribimos:
from subprocess import call call(['easy_install', 'laspy'])
Si nos devuelve un “0” es que todo ha salido bien. Ahora simplemente reiniciamos QGIS e importamos el módulo:
from laspy.file import File
Y vemos que lo importa. ¡Perfecto! ¡A por otra librería!.
2 método: Desde la consola de OSGeo4W
Para emplear este método debemos abrir la consola de OsGeo4W como administrador, si no lo somos, la cual la podemos encontrar rápidamente en el buscador de aplicaciones de Windows.
Simplemente la abrimos y escribimos:
py3_env
y luego:
python3 -m pip install numpy
Si abrimos QGIS e importamos el módulo vemos que lo hace correctamente:
import numpy as np
Venga, a por la tercera opción.
3 método: Con nuestro propio fichero de configuración
Este último método es con nuestro propio .bat. Para ello nos creamos un, por ejemplo, py3_env.bat con el siguiente contenido, en el que solo debemos cambiar la ruta de la variable OSGEO4W_ROOT.
@ECHO OFF set OSGEO4W_ROOT=D:\OSGeo4W64 set PATH=%OSGEO4W_ROOT%\bin;%PATH% set PATH=%PATH%;%OSGEO4W_ROOT%\apps\qgis\bin call %OSGEO4W_ROOT%\bin\o4w_env.bat call qt5_env.bat call py3_env.bat path %OSGEO4W_ROOT%\apps\qgis\bin;%PATH% cd /d %~dp0 call cmd
Una vez lo tengamos, simplemente lo ejecutamos y escribimos:
python3 -m pip install scipy
Cuando finalice abrimos QGIS e importamos el módulo:
from scipy import misc
Y esto todo, ahora ya podemos instalar desde QGIS el complemento en cuestión.
¿Qué método es mejor? Pues teniendo en cuenta que yo me hago ‘.bats’ para absolutamente todo, os diría que la tercera opción, además estableces tus variables, tu propia versión de QGIS (podemos tener muchas versiones instaladas) etc., pero aquí cada cual elige el que mejor le venga en cada momento.
Espero que sea de ayuda y hasta a próxima Geogeeks. 😉
y ¿qué pasa si retorna «1» en el método de la consola de Python?
Buenos días,
Si devuelve 1 quiere decir que no se ha instalado correctamente. En una instalación satisfactoria el valor devuelve será 0.
Deberás añadir unos cuantos parámetros más a tu llamada para ver la salida más detallada.
Aquí tienes la documentación de subprocess: https://docs.python.org/3/library/subprocess.html
Un saludo.