Pregunta

He visto una buena cantidad de setuptools bashing en los Internet últimamente. Más recientemente, leí En envases post sobre por qué nadie debe estar usando setuptools. Desde mi tiempo en #python en Freenode, sé que hay algunas almas ahí que detestan absolutamente la misma. Yo me cuento entre ellos, pero yo realmente se utilicen.

setuptools

he utilizado para proyectos suficientes sean conscientes de sus deficiencias, y yo preferiría algo mejor. Particularmente no me gusta el formato de huevo y cómo se desplegó. Con todos los problemas setuptools', no he encontrado una alternativa mejor.

Mi comprensión de herramientas como pip es que está destinado a ser un reemplazo easy_install (no setuptools). De hecho, pip utiliza algunos componentes setuptools, ¿verdad?

La mayoría de mis paquetes de hacer uso de un setup.py setuptools para notificaciones, que declara todas las dependencias. Cuando estén listos, construiré un sdist, bdist y bdist_egg, y subirlos a PyPI.

Si quisiera cambiar al uso de la pipa, qué tipo de cambios necesitaría hacer para librarme de easy_install dependencias? Donde se declaren las dependencias? Supongo que necesitaría para conseguir lejos de usar el formato de huevo, y proporcionar distribuciones de código fuente solo. Si es así, ¿Cómo genero los directorios de huevo información? o qué me necesito?

¿Cómo cambiaría esto mi uso de virtualenv? No virtualenv utilizar easy_install para gestionar los entornos?

¿Cómo cambiaría esto mi uso de los setuptools proporcionado comando "desarrollo"? ¿No debería usar eso? ¿Cuál es la alternativa?

Estoy básicamente tratando de obtener una imagen de lo que mi flujo de trabajo de desarrollo se verá así.

Antes de que nadie lo sugiere, no estoy buscando una solución SO-dependiente. Estoy preocupado principalmente con Debian Linux, pero los paquetes deb no son una opción, por las razones Ian Bicking esboza aquí .

¿Fue útil?

Solución

pip utiliza Setuptools, y no requiere ningún cambio en los paquetes. En realidad, se instalan paquetes con Setuptools, usando:

python -c 'import setuptools; __file__="setup.py"; execfile(__file__)' \
    install \
    --single-version-externally-managed

Debido a que utiliza esa opción (--single-version-externally-managed) que no siempre instalar huevos como archivos zip, no soporta múltiples versiones instaladas de forma simultánea de software, y los paquetes se instalan plana (como python setup.py install funciona si se utiliza sólo distutils). metadatos de huevo aún está instalada. pip también, como easy_install, descarga e instala todos los requisitos de un paquete.

Además También puede utilizar un archivo de requisitos para agregar otros paquetes que se deben instalar en un lote, y para hacer requisitos de la versión más exacta (sin poner esos requisitos exactos en sus archivos setup.py ). Pero si usted no hace archivos requisitos, entonces tendrá que utilizar al igual que easy_install.

Para su install_requires No recomiendo ningún cambio, a menos que usted ha estado tratando de crear requisitos muy exactas ahí que se sabe que son buenos. Creo que hay un límite para el exacto que puede ser útil en los archivos python setup.py develop acerca de las versiones, porque no se puede realmente sabe lo que el futuro compatibilidad de las nuevas bibliotecas será, y yo no recomiendo que intenta predecir esto. archivos de necesidad son un lugar alternativo para diseñar requisitos de la versión conservadores.

Puede seguir utilizando pip install -e svn+http://mysite/svn/Project/trunk#egg=Project, y de hecho si src/project será comprobar que fuera (en setup.py develop) y correr pip install -vv en él. De manera que el flujo de trabajo no es muy diferente.

Si ejecuta pip más detallados (como <=>) verá una gran cantidad de los comandos que se ejecutan, y es probable que reconoce la mayoría de ellos.

Otros consejos

Estoy escribiendo esto en abril de 2014. Sé consciente de la fecha en nada escrito sobre Python envasado, distribución o instalación. Parece que ha habido cierta disminución del sectarismo, la mejora en las implementaciones, PEP-normalización y la unificación de los frentes en el pasado, por ejemplo, tres años.

Por ejemplo, el Python Packaging Autoridad es "un grupo de trabajo que mantiene muchos de los proyectos relevantes en los envases de Python."

El python.org Python Guía Packaging User tiene Recomendaciones de herramientas y El futuro de Python Packaging secciones.

distribute era una rama de setuptools que fue remerged en junio de 2013. La guía dice, "Use pip para definir proyectos y crear distribuciones Fuente."

A partir del PEP 453 y Python 3.4, la guía recomienda, "Uso pyvenv para instalar los paquetes de Python desde PyPI", y wheel se incluye con Python 3.4 e instalado en virtualenvs por buildout, que también se incluye . Es posible encontrar la sección PEP 453 "justificación" interesante.

También hay nuevas y newish herramientas mencionadas en la guía, incluyendo < => y <=> .

Estoy contento de haber leído las dos siguientes historias técnicos / semi-política.

Por Martijn Faassen en 2009: Una historia de Python Embalaje .

Y por Armin Ronacher en junio de 2013 (el título no es grave): Python Embalaje: odio, odio, odio en todas partes

.

Para empezar, pip es realmente nuevo. Nuevo, incompleta y en gran parte no-probado en el mundo real.

Se muestra una gran promesa, pero hasta el momento en que puede hacer todo lo que easy_install / setuptools pueden hacer que no no es probable que las capturas de una manera grande, sobre todo en la corporación.

easy_install / setuptools es grande y compleja - y que ofende a mucha gente. Por desgracia, hay una muy buena razón para que la complejidad que es el que atiende a un gran número de diferentes casos de uso. Mi propia está apoyando una piscina grande (> 300) de los usuarios de escritorio, además de una rejilla de tamaño similar con una aplicación actualizada con frecuencia. La idea de que podíamos hacer esto permitiendo que cada usuario para instalar desde el código fuente es absurdo -. Huevos han demostrado ser un método confiable para distribuir mi proyecto

Mi consejo: Aprender a usar setuptools - es realmente una cosa maravillosa. La mayoría de las personas que lo odian no lo entienden, o simplemente no tienen el uso de los casos para que el sistema de distribución con todas las funciones.

: -)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top