Módulo pkg_resources
no encontrado en ambientes UV#
Si como muchos, ya has iniciado la migración al gestor de paquetes
uv, puede que te hayas encontrado con el problema de
ModuleNotFoundError: No module named 'pkg_resources'
. No te preocupes, esto no
será un obstáculo para continuar la migración.
¿Qué es pkg_resources
?#
El módulo de pkg_resources
pertenece al paquete de setuptools y permite el
acceso a los archivos de recursos y el descubrimiento de extensiones. Sin
embargo, este módulo no es recomendable y ha sido marcado como obsoleto, y en su
lugar se debería usar importlib.resources
e importlib.metadata
. Sin embargo,
así esté obsoleto, muchos paquetes lo usan. ¿Qué produce el error?
¿Qué es Setuptools?#
Setuptools es una biblioteca diseñada para ayudar a generar paquetes de
bibliotecas Python, con rutinas complementarias a distutils
. Sin embargo, esta
biblioteca no es parte del core de Python y es realmente un paquete
independiente. La instalación base en los sistemas operativos o la instalación
estándar de Python o de algunos gestores de ambientes como conda, la
suelen incluir. Pero la instalación creada con el ambiente de uv no
la posee. Aquí se origina el problema, es que muchos paquetes dependen de la
suposición de tener setuptools
ya instalado por defecto, y uv no lo
dispone de esta forma. Python por defecto no dispone de una herramienta de
empaquetado y publicación como parte de su core (setuptools
está bajo el
gobierno de PyPA, pero esto no implica que sea core).
Agregar setuptools
a las dependencias#
Con el contexto anterior, nos queda una solución clara. El problema no es de
uv, es que los paquetes afectados han olvidado añadir en sus
dependencias el paquete de setuptools
. Siendo así, nuestra solución al
problema es simple: añadir setuptools
a las dependencias.
Si tu proyecto usa el archivo requirements.txt
este es el lugar adecuado para
añadirlo (ver
Instalación de paquetes Python),
pero si usas la
gestión de proyectos
de uv puedes usar uv add setuptools
, y si es una herramienta será
necesario inyectar la dependencia --with setuptools
.
Referencias#
Package Discovery and Resource Access using pkg_resources. Setuptools.
Guides on backward compatibility & deprecated practice. Setuptools.
Some tools are installed without pkg_resources. GitHub UV.