¿El archivo de requisitos de Python tiene que especificar la versión?

3 minutos de lectura

Avatar de usuario de Intrastellar Explorer
Explorador intraestelar

Tengo un archivo requirements.txt para una base de código de Python. El archivo tiene todo especificado:

pytz==2017.2
requests==2.18.4
six==1.11.0

Estoy agregando un nuevo paquete. ¿Debo enumerar su versión? En caso afirmativo, ¿cómo elijo una versión para especificar?

  • ¿Está utilizando un entorno virtual?

    – Código Toms

    07/03/2019 a las 20:42

  • Te tropezaste con un debate polémico en Python. no, no lo haces tener a. ¿Deberías depende de su aplicación. ¿Puedes describir lo que estás tratando de hacer?

    – pilang

    7 de marzo de 2019 a las 22:08

  • @Tom Mac Sí, pero por curiosidad, ¿por qué preguntas?

    – Explorador intraestelar

    7 de marzo de 2019 a las 23:27

  • @pylang Me pregunto, trato de seguir las mejores prácticas. La aplicación es la automatización de la fabricación; en este caso, un controlador escrito en Python.

    – Explorador intraestelar

    7 de marzo de 2019 a las 23:27

  • @Intrastellar Explorer Iba a sugerir usar uno antes de que se congelara en sus requisitos, pero está ordenado

    – Código Toms

    7 de marzo de 2019 a las 23:56

Avatar de usuario de Ingeniero
Ingeniero

Revisar la documentos pip para obtener más información, pero básicamente no necesita especificar una versión. Haciéndolo poder Sin embargo, evite dolores de cabeza, ya que especificar una versión le permite garantizar que no terminará en un infierno de dependencia.

Tenga en cuenta que si está creando un paquete para implementar e instalar pip, debe usar el instalar-requiere metadatos en lugar de depender de los requisitos.txt.

Además, es una buena idea adquirir el hábito de usar entornos virtuales para evitar problemas de dependencia, especialmente al desarrollar sus propias cosas. Anaconda ofrece una solución sencilla con el conda create comando, y virtualenv funciona muy bien con virtualenvwrapper para una solución más ligera. Otra solución, pipenves bastante popular.

Avatar de usuario de Toms Code
Código Toms

Especificar una versión no es un requisito, aunque ayuda mucho en el futuro. Algunas versiones de paquetes no funcionarán bien con otros paquetes y sus respectivas versiones. Es difícil predecir cómo los cambios en el futuro afectarán estas interrelaciones. Esta es la razón por la que es muy beneficioso crear una instantánea en el tiempo (en su requirements.txt) que muestre qué interrelaciones de versión funcionan.

Para crear un archivo requirements.txt que incluya las versiones de los paquetes que está utilizando, haga lo siguiente. En su consola/terminal cd en la ubicación que le gustaría que fuera su requerimiento.txt e ingrese:

pip freeze > requirements.txt

Esto generará automáticamente un archivo de requisito.txt que incluye los paquetes que ha instalado con sus respectivas versiones.

Un consejo: debe intentar utilizar un entorno virtual para cada proyecto individual en el que trabajará. Esto crea una ‘burbuja’ para que pueda trabajar e instalar versiones específicas del paquete, sin que afecte sus otros proyectos. Le ahorrará muchos dolores de cabeza en el futuro, ya que sus paquetes y versiones se mantendrán específicos para el proyecto. sugiero usar Entorno virtual Anaconda.

  • Me encanta esta respuesta, no sabía cómo verificar todas las versiones que tengo actualmente. Gracias

    – Denys Fialko

    31 de enero de 2021 a las 21:20

  • ¡Me alegro de que haya ayudado a @DenysFiialko! También puede escribir ‘pip freeze’ (sin escribir ‘> requisitos.txt’) mientras está en su cosnole/terminal para enumerar las versiones de su paquete si no desea crear un archivo de texto

    – Código Toms

    31/01/2021 a las 21:50


No, no es necesario especificar una versión. Sin embargo, probablemente sea una buena idea especificar uno.

Si desea especificar una versión pero no sabe qué versión especificar, intente usar pip freezeque arrojará una lista de todos los paquetes que tiene instalados actualmente y cuáles son sus versiones.

¿Ha sido útil esta solución?