¿Alguien encuentra esta advertencia al ejecutar python setup.py install
un paquete PyPI?
install_requires
define lo que requiere el paquete. Muchos paquetes de PyPI tienen esta opción. ¿Cómo puede ser una "opción de distribución desconocida"?
¿Alguien encuentra esta advertencia al ejecutar python setup.py install
un paquete PyPI?
install_requires
define lo que requiere el paquete. Muchos paquetes de PyPI tienen esta opción. ¿Cómo puede ser una "opción de distribución desconocida"?
Respuestas:
python setup.py
usa distutils que no admite 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, llame a setuptools a través del easy_install
comando 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 deban tener setuptools instalados.
pip
, entonces, ¿cómo ejecuto el setup.py
archivo si solo quiero crear una extensión en el lugar?
python setup.py sdist
e instalarlo con pip install resulting_package.tar.gz
. También puede usar pip install -e
para instalar directamente desde la fuente, pero siempre he preferido instalar desde el paquete o desde el repositorio directamente ..
pip install pendulum==1.4.4
. Correr pip install setuptools --upgrade
borró el error.
Este fue el primer resultado de mi búsqueda en Google, pero no tuvo respuesta. Descubrí que la actualización de las herramientas de configuración me resolvió el problema (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!
pip3 install neovim-remote
.)
¡ ATENCIÓN ! ¡ ATENCIÓN ! Respuesta imperfecta por delante. Para obtener el "memorando más reciente" sobre el estado del empaquetado en el universo de Python, lea este ensayo bastante detallado .
Me acabo de encontrar con este problema al intentar compilar / instalar ansible. El problema parece ser que distutils realmente no admite install_requires. Setuptools debería parchear distutils sobre la marcha, pero no es así, probablemente porque la última versión de setuptools es 0.6c11 de 2009, mientras que distutils es un proyecto central de Python.
Entonces, incluso después de instalar manualmente setuptools-0.6c11-py2.7.egg, ejecutar setup.py solo recoge distutils dist.py, y no el de site-packages / setuptools /.
Además, la documentación de setuptools sugiere cómo usar ez_setup y no distutils.
Sin embargo, las herramientas de configuración las proporciona distribuir hoy en día, y esa versión de setup () admite install_requires.
setuptools
y distribute
están en proceso de fusionarse, pero la fusión aún no está completa (actualizaré este ensayo tan pronto como que cambia) ". ¿Alguien sabe cuál es el estado de las cosas en lo que va de 2019? Con la fecha de fin de vida útil de Python 2.7 acercándose rápidamente, muchos paquetes de Python estarán en proceso de actualización y reempaquetado.
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 setup.py
usar el comando de configuración, idealmente desde distutils. Literalmente, no hay otras importaciones o códigos aparte de los kwargs que setup()
no sean los que anoto aquí.
Recibo el error cuando las importaciones de mi setup.py
archivo son:
from distutils.core import setup
Cuando utilizo 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 lo estoy usando setuptools
, solo importarlo cambia el comportamiento de tal manera que ya no emite las advertencias. Para mí, esta es la causa de una diferencia realmente desconcertante en la que algunos proyectos que estoy usando dan esas advertencias y otros no.
Claramente, se está llevando a cabo alguna forma de parcheo, y se ve afectado por si se realiza o no esa importación. Probablemente esta no sea la situación para todos los que investigan este problema, pero para el entorno limitado 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 distutils deberían instalar las herramientas de configuración de monopatch, y que tenían el problema al instalar Ansible. Ansible parece haber intentado permitir instalaciones sin tener herramientas de configuración en el pasado, y luego volvió a hacerlo.
https://github.com/ansible/ansible/blob/devel/setup.py
Hay muchas cosas en el aire ... pero si está buscando una respuesta simple para un proyecto simple, probablemente solo debería importar herramientas de configuración.
import setuptools
también resolvió milagrosamente el problema para mí en ubuntu 16.04 con python 3.5.
Esta es una advertencia de distutils y es una señal de que no tiene instaladas las herramientas de instalación. Instalarlo desde http://pypi.python.org/pypi/setuptools eliminará la advertencia.
sudo apt-get install python-dev # for python2.x installs
sudo apt-get install python3-dev # for python3.x installs
Instalará los encabezados que falten. Resolvió mi problema
En conclusión :
distutils
no soporta install_requires
o entry_points
, setuptools
lo hace.
cambie from distutils.core import setup
en setup.py a from setuptools import setup
o refactorice su setup.py para usar solo distutils
funciones.
Vine aquí porque no me había dado cuenta de que entry_points
era solo una setuptools
característica.
Si estás aquí queriendo convertirte setuptools
a distutils
Me gusta:
install_requires
de setup.py y solo usar requirements.txt conpip
entry_points
a scripts
( doc ) y refactorice cualquier módulo que entry_points
dependa de que sean scripts completos con shebangs y un punto de entrada.Por lo que puedo decir, este es un error en setuptools en el que no elimina 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 / evitar-advertencias-del-usuario-emitidas-al-llamar
Si tiene un incondicional import setuptools
en su setup.py
(como debería hacerlo si usa las opciones específicas de setuptools), entonces el hecho de que el script no está fallandoImportError
indica que setuptools está instalado correctamente.
Puede silenciar la advertencia de la siguiente manera:
python -W ignore::UserWarning:distutils.dist setup.py <any-other-args>
Solamente haga esto si usa la importación incondicional que fallará completamente si las herramientas de configuración no están instaladas :)
(Veo este mismo comportamiento en un pago del repositorio de setuptools posterior a la fusión, por lo que estoy seguro de que es un error de 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)
Ahora he visto esto en herramientas heredadas que usan Python2.7, donde una compilación (como un Dockerfile) instala una dependencia no fija, por ejemplo, pytest. PyTest ha eliminado la compatibilidad con Python 2.7, por lo que es posible que deba especificar la versión <la nueva versión del paquete.
O muerde la bala y convierta esa aplicación a Python 3 si es viable.