Recientemente comencé un proyecto de Django y rápidamente me di cuenta de que virtualenv sería realmente útil por muchas razones. Configuré el virtualenv y mi proyecto, pero ahora me pregunto qué archivo debería agregar a mi control de fuente (en mi caso, Mercurial). ¿Debo agregar todos los archivos debajo de la carpeta de venv? ¿Cómo me aseguro de que un colega pueda clonar y comenzar a trabajar inmediatamente sin tener que configurar el env nuevamente?Virtualenv y control de versión de código fuente
Respuesta
generar un archivo de "requisitos" (por lo general requirements.txt
) que se comprometan con su proyecto:
pip freeze > requirements.txt
Entonces, cada desarrollador va a establecer su propio virtualenv y ejecute:
pip install -r requirements.txt
¡Todos estos problemas de entorno son comunes cuando se está desarrollando python/django! ¡Revisé todos estos problemas y probé algunas soluciones! Cosas que he probado:
- proyecto local que se ejecuta
- proyecto se ejecuta en virtualenv
- proyecto que se ejecuta en una máquina virtual
- proyecto que se ejecuta en una máquina virtual, usando vagabundo
La mejor solución ¡Encontré que era el # 4! porque la compañía que solía trabajar, cada persona en el equipo tiene un sistema operativo diferente, todo tipo de ventanas, mac y linux, ¡y para instalar todas las dependencias para cada entorno lleva tiempo! Así que decidimos probar virtualenv, ¡que es realmente bueno! pero aún así cada persona tiene que configurar su propio entorno. ¡El problema en virtualenv es que todas las fuentes de Python se encuentran dentro del entorno que usted crea! ¡Así que no enviaría esos archivos a un control de versión de origen! La mejor solución fue la # 4, porque eso era exactamente lo que necesitaba, Vagrant usa Chef para configurar su entorno, por lo que solo tiene que escribir algunas recetas y dejar que las ejecute vagabundo por usted. Luego, inserte esas recetas en SCM, luego, cuando la siguiente persona obtenga los archivos de SCM y los recargue, todas las dependencias se instalarán automáticamente.
Tengo una publicación en el blog que explica más sobre el tema y también he creado a Django Blank project in github para que pueda obtener un punto de inicio de su proyecto utilizando vagabundo.
http://arthurnn.com/blog/2011/11/25/easy-django-quickstart/ (enlace ya no está activo, por lo vinculado a Wayback Machine)
EDITAR
Solución de Chris Pratt es una buena idea, así, sin embargo, algunas bibliotecas no son tan fáciles de instalar en todos OS, por ejemplo, muchas personas en Mac tienen problemas cuando quieren instalar MySQLdb-python. que es una biblioteca realmente común, pero si todos en su equipo tienen que pasar tiempo resolviendo este problema, ¡no es para nada bueno!
'MySQLdb-python' Esta es una buena razón para usar un entorno completo, pero esto no se puede lograr con pip/requirements .¿TXT? – kbuilds
- 1. Control de código fuente para proyectos web
- 2. Desarrollo de versión y control de prueba
- 3. Política de control de código fuente
- 4. Control de versión segura
- 5. Documentación y control de versión
- 6. ClearCase para el control de código fuente?
- 7. Autotools y control de versión
- 8. ¿Qué control de fuente/versión usar para el hogar?
- 9. Vinculaciones de asociación de control de código fuente Problema
- 10. ¿La mejor práctica para mantener el código fuente bajo control de versión con varias compañías?
- 11. El código fuente es diferente de la versión original
- 12. Administrar fuentes y binarios de terceros usados por código bajo el control de código fuente
- 13. ¿Utiliza el control de versión que no sea para el código fuente?
- 14. Aplicaciones de Grails y control de versión
- 15. Mover el comando deshabilitado en el control de código fuente
- 16. Vinculación de la cobertura de código al control de versión
- 17. Fuente política de número de versión de código
- 18. Xcode: Agregar WorkspaceSettings.xcsettings al control de código fuente
- 19. Control de fuente de módulos de código Excel VBA
- 20. ¿Control de versión ágil?
- 21. Integración continua con control de código fuente distribuido
- 22. Código de búsqueda TFS 2010 y VS 2010 en control de código fuente
- 23. Control de fuente vs. Control de revisión?
- 24. NuGet y control de versión distribuida (DVCS)
- 25. ¿Control de versión para DOCX y PDF?
- 26. certificado SSL Almacenamiento de control de código fuente
- 27. Almacenamiento de contraseñas en el control de código fuente
- 28. Sistemas de control de código fuente en desarrollo web
- 29. Control de versión portátil?
- 30. Versión descargable/navegable del código fuente de .NET Framework?
I wouldn No recomiendo poner el virtualenv bajo control de código fuente; no será portátil entre versiones de Python, sistemas operativos o plataformas de 32/64 bits. En su lugar, simplemente use '~/path/to/virtualenv/bin/pip freeze> ~/path/to/repo/requirements.txt'. Otros desarrolladores necesitarán configurar su propio virtualenv, pero son literalmente dos comandos: 'virtualenv ~/path/to/env',' ~/path/to/env/bin/pip install -r ~/path/to/requirements. txt'. – AdamKG
Estimado lector de Google, vea también: http://stackoverflow.com/a/6012590/82216 – sampablokuper