2012-08-09 10 views
8

Estoy usando virtualenv para desarrollar una aplicación django con un equipo. El servidor en el que estamos implementando ejecuta python 2.6, pero el predeterminado para nuestras máquinas es 2.7.3. ¿Hay alguna manera de especificar la versión de Python en el archivo requirements.txt, o algo similar, dentro de la base de código?Especifique la versión de Python para Virtualenv en Requirements.txt

Sé que requirements.txt es una cuestión de pepita, y la versión de python es una cosa virtualenv, pero sería muy conveniente no tener que decirle a cada persona nueva que se une al equipo cómo configurar su virtualenv.

+2

No entiendo qué es lo que motiva su pregunta. ¿Está escrito su código para '2.6' o' 2.7'? Si no está escrito para '2.6', obviamente no va a funcionar en tu servidor, así que no sé qué quieres hacer :). Asumiendo que está escrito para '2.6', solo documente que es' 2.6 + ', y no hay necesidad de especificar particularmente usar' 2.6' al crear un venv, ¿qué pasa si alguien usa '2.7' ?. – Julian

+1

El código está escrito para 2.6 ya que los servidores lo requieren. Debería estar documentado, pero me gustaría hacer cumplir 2.6 a través de virtualenv y luego decirle a las personas que es 2.6+ y espero que lean los documentos de Python a fondo. – Arion

+1

Esta pregunta ha sido respondida aquí: http://stackoverflow.com/a/33451105/1959808 –

Respuesta

4

Ni pip ni virtualenv instalan python (aunque pip tries). Usan todo lo que especifiques.

Puede escribir un archivo README que mencione la versión requerida de Python o proporcionar una secuencia de comandos fabric que pueda implementarse en localhost y especificar la versión allí. Por ejemplo, instructions to install virtualenv, pip, distribute.

Para aquellas personas que no leen las instrucciones, podría haber un sistema de CI (jenkins, buildbot) que pueda ejecutar pruebas unitarias utilizando versiones compatibles de python (antes/después de la confirmación).

Para administrar la instalación múltiple de Python puede usar algo como pythonz.

2

que sería muy conveniente no tener que decir a cada nueva persona unirse al equipo de cómo configurar su virtualenv

Sólo tiene que añadir que a la luz del conjunto de instrucciones que dé nuevos miembros cuando las unirse; justo en el mismo lugar cuando les informa sobre la wiki de documentación interna, la contraseña del wifi y el número de teléfono de la tienda de entregas de sándwich.

Será extremadamente incómodo para no tener que decirle a la gente y hacer que lo resuelvan ellos mismos; la primera vez que envían algo que usa collections.Counter solo para descubrir que rompió la compilación porque el servidor no tiene 2.7.x

+3

Ese es el plan alternativo, pero preferiría una solución programática a un problema programático. – Arion

+0

No estoy seguro de que esto califique como un problema programático; esto es simplemente un problema de documentación/embarque. Si * debe *, puede agregar un cheque a su secuencia de comandos/enlace de despliegue que verifique la versión de Python; pero entonces, ¿cuál es el punto? Incluso si la versión no coincide, es posible que su código aún se ejecute. Debería verificar si su código está usando características que se introdujeron en 2.7, para las cuales no conozco una forma automática. –

+1

"No estoy seguro de que esto califique como un problema programático, esto es simplemente cuestión de documentación/incorporación". Según esa lógica, no debería tener un requirements.txt en absoluto porque entonces las personas podrían suponer que es la versión más reciente de una biblioteca y usar características de esa biblioteca que no existen en la versión que realmente están usando. Además, si no tienes pruebas unitarias (que se romperán en tu ejemplo), entonces estás jugando un juego arriesgado de todos modos. – semicolon

0

Según su comentario, el único problema aquí debería ser asegurarse de que no haya ningún código de solo 2.7 en tu base de código. Para eso, recomiendo usar tox, y tenerlo configurado para crear un entorno 2.6 para probar, para que cuando sus compañeros de trabajo ejecuten su conjunto de pruebas, las pruebas se ejecuten en un entorno virtual 2.6.

Cuestiones relacionadas