pypi UserWarning: Opción de distribución desconocida: ‘install_requires’

¿Alguien encuentra esta advertencia al ejecutar la python setup.py install de python setup.py install de un paquete PyPI?

install_requires define lo que requiere el paquete. Una gran cantidad de paquetes de PyPI tienen esta opción. ¿Cómo puede ser una “opción de distribución desconocida”?

python setup.py usa distutils que no son compatibles con install_requires. setuptools lo hace, también distribuye (su sucesor), y pip (que usa cualquiera) lo hace. Pero en realidad tienes que usarlos. Es decir, llamar a setuptools a través del comando easy_install o pip install .

Otra forma es importar la configuración de setuptools en su setup.py, pero esto no es estándar y hace que todos los que quieran usar su paquete tengan que tener setuptools instalado.

¡ ATENCIÓN ! ¡ ATENCIÓN ! Respuesta imperfecta por delante. Para obtener la “última nota” sobre el estado de empaquetado en el universo de Python, lea este ensayo bastante detallado .

Acabo de encontrar este problema cuando bash construir / instalar ansible. El problema parece ser que los distutils realmente no son compatibles con install_requires. Setuptools debería distribuir los parches de mono sobre la marcha, pero no lo hace, probablemente porque la última versión de setuptools es 0.6c11 desde 2009, mientras que distutils es un proyecto central de Python.

Por lo tanto, incluso después de instalar manualmente setuptools-0.6c11-py2.7.egg, ejecutar setup.py solo toma distutils dist.py, y no el de site-packages / setuptools /.

También la documentación de setuptools sugiere el uso de ez_setup y no distutils.

Sin embargo, setuptools se proporciona a sí mismo por distribución hoy en día, y esa versión de setup () es compatible con install_requires.

Este fue el primer resultado en mi búsqueda de Google, pero no tuvo respuesta. Encontré que actualizar setuptools resolvió el problema por mí (y pip por si acaso)

 pip install --upgrade pip pip install --upgrade setuptools 

Espero que esto ayude a la próxima persona a encontrar este enlace!

Esta es una advertencia de los distritos y es una señal de que no tiene instaladas las herramientas de configuración. Al instalarlo desde http://pypi.python.org/pypi/setuptools se eliminará la advertencia.

Estoy en una Mac con python 2.7.11. He estado jugando con la creación de proyectos extremadamente simples y directos, donde mi único requisito es que pueda ejecutar python setup.py install , y que setup.py use el comando setup, idealmente desde distutils. Literalmente, no hay otras importaciones o códigos aparte de los kwargs para setup() aparte de lo que menciono aquí.

Recibo el error cuando las importaciones para mi archivo setup.py son:

 from distutils.core import setup 

Cuando uso esto, recibo advertencias como

/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py:267: UserWarning: Opción de distribución desconocida: ‘entry_points’ warnings.warn ( msg)

Si cambio las importaciones (y nada más ) a lo siguiente:

 from distutils.core import setup import setuptools # noqa 

Las advertencias desaparecen.

Tenga en cuenta que no estoy usando setuptools , solo importarlo cambia el comportamiento de manera que ya no emita las advertencias. Para mí, esta es la causa de una diferencia realmente desconcertante donde algunos proyectos que estoy usando dan esas advertencias y otros no.

Claramente, está ocurriendo alguna forma de parcheo de monos, y se ve afectada por la importación o no. Probablemente esta no sea la situación para todos los que investigan este problema, pero para el entorno estrecho en el que estoy trabajando, esta es la respuesta que estaba buscando.


Esto es coherente con el otro comentario (de la comunidad), que dice que los distritos deben ser herramientas de configuración de progtwigs, y que tuvieron el problema al instalar Ansible. Parece que Ansible ha intentado permitir las instalaciones sin tener herramientas de configuración en el pasado, y luego volvió a eso.

https://github.com/ansible/ansible/blob/devel/setup.py

Hay muchas cosas en el air … pero si está buscando una respuesta simple para un proyecto simple, probablemente debería importar las herramientas de configuración.

 sudo apt-get install python-dev # for python2.x installs sudo apt-get install python3-dev # for python3.x installs 

Se instalará cualquier encabezado faltante. Resolvió mi problema

Por lo que puedo decir, este es un error en setuptools donde no está eliminando las opciones específicas de setuptools antes de llamar a la clase base en la biblioteca estándar: https://bitbucket.org/pypa/setuptools/issue/29 / Avoid-userwarnings-emitted-when-calling

Si tiene import setuptools de import setuptools incondicionales en su setup.py (como si usara las opciones específicas de setuptools), el hecho de que el script no esté fallando con ImportError indica que setuptools está correctamente instalado.

Puede silenciar la advertencia de la siguiente manera:

 python -W ignore::UserWarning:distutils.dist setup.py  

Solo haga esto si usa la importación incondicional que fallará completamente si setuptools no está instalado 🙂

(Estoy viendo este mismo comportamiento en una compra del repository setuptools posterior a la fusión, por lo que estoy seguro de que es un error setuptools en lugar de un problema de configuración del sistema. Espero que la distribución previa a la fusión tenga el mismo problema)