Hoy me encontraba revisando dependencias de las herramientas, librerías y frameworks que tenía en Python y me he encontrado con la herramienta pipdeptree, una herramienta que nos permite enumerar las herramientas, librerías y frameworks al estilo del comando "pip freeze" pero mostrando además cada una de las dependencias que tiene con otras librerías.
Como suele ser la costumbre realicé las instalación con el clásico:
pip install pipdeptree
La instalación resultó satisfactoria pero al ejecutar la herramienta devuelve un error:
$ pipdeptree failed to create process.
El error "failed to create process" se produce por un problema de la ruta en el script de ejecución. Concretamente por culpa de espacios en la ruta donde tenemos instalados Python y donde se instalan los paquetes mediante el comando "pip". Si eres de los que tiene instalado Python en "Archivos de Programa" o "Program File", vas a tener este problema si además estás usando una versión de "setuptools" anterior a la versión 24.3.1 del 23 de Julio del 2016.
Para ver la versión de "setuptools" que estás usando actualmente ejecuta el siguiente comando:
easy_install --version
Si tienes una versión anterior y no quieres actualizar, puedes corregir el error si vas a la carpeta "Scripts" dentro de tu instalación de Python y buscas el archivo "pipdeptree-script.py" que es el que ejecuta la herramienta gracias al binario "pipdeptree.exe" que lo invoca:
#!d:\program files (x86)\python35-32\python.exe # EASY-INSTALL-ENTRY-SCRIPT: 'pipdeptree==0.10.1','console_scripts','pipdeptree' __requires__ = 'pipdeptree==0.10.1' import re import sys from pkg_resources import load_entry_point if __name__ == '__main__': sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) sys.exit( load_entry_point('pipdeptree==0.10.1', 'console_scripts', 'pipdeptree')() )
Para corregir el problema basta con añadir unas comillas a la ruta de la primera línea:
#!"d:\program files (x86)\python35-32\python.exe"
Si no tienes inconveniente alguno en actualizar "setuptools", basta con que ejecutes el comando de actualización estándar de "pip":
pip install --upgrade setuptools
Obviamente la segunda solución es la más recomendable, pero la explicación de la primera puede servir para solucionar errores similares en otras herramientas si se presentan, y si la actualización no funciona o no es una opción.