2012-08-29 16 views
54

Estoy confundido en cuanto a dónde debo poner mis virtualenvs.¿Dónde deberían crearse virtualenvs?

Con mi primer proyecto django, creé el proyecto con el comando "django-admin.py startproject djangoproject".

Luego entré en el directorio djangoproject y ejecuté el comando "virtualenv env" que creó el directorio del entorno virtual en el mismo nivel que el directorio interno "djangoproject".

¿Es este el lugar equivocado para crear el virtualenv para este proyecto en particular?

Me da la impresión de que la mayoría de las personas mantienen todos sus virtualenvs juntos en un directorio completamente diferente, p. ~/virtualenvs, y luego usa virtualenvwrapper para alternar entre ellos.

¿Hay una forma correcta de hacerlo?

Respuesta

80

Mucha gente usa la herramienta virtualenvwrapper, que mantiene todos los virtualenvs en el mismo lugar (el directorio ~/.virtualenvs) y permite accesos directos para crearlos y mantenerlos allí. Por ejemplo, es posible hacer:

mkvirtualenv djangoproject 

y luego más tarde:

workon djangoproject 

Es probablemente una mala idea para mantener el directorio virtualenv en el propio proyecto, ya que no quiere distribuirlo (puede ser específico para su computadora o sistema operativo). En su lugar, mantener un archivo usando requirements.txt pip:

pip freeze > requirements.txt 

y distribuir eso. Esto permitirá que otras personas que utilizan su proyecto para volver a instalar todos los mismos requisitos en su virtualenv con:

pip install -r requirements.txt 
+0

nice Nunca había mirado en las cosas de las pepitas, pero si necesito algún día esto será útil –

+0

pip es muy popular en la comunidad de Django y muy fácil de usar. –

+0

Gracias David, eso es lo que yo pensaba. Sabía sobre los requisitos y estoy haciendo eso. Simplemente no estaba seguro de a dónde debería ir el enemigo. Su comentario acerca de que sea específico de sistema operativo es una buena justificación para hacer lo que sugiere. – William

4

El lugar generalmente aceptada para poner ellos es el mismo lugar que la instalación predeterminada de virtualenvwrapper los pone: ~/.virtualenvs

Relacionado: virtualenvwrapper es una excelente herramienta que proporciona shorthands para los comandos virtualenv comunes. http://www.doughellmann.com/projects/virtualenvwrapper/

10

Cambio de la ubicación del directorio virtualenv rompe

Ésta es una de las principales ventajas de poner el directorio fuera del árbol del repositorio, por ejemplo, bajo ~/.virtualenvs con virutalenvwrapper.

De lo contrario, si lo mantiene en el árbol del proyecto, al mover la ubicación del proyecto se romperá el virtualenv.

Ver: Renaming a virtualenv folder without breaking it

Hay --relocatable pero se sabe que no puede ser perfecto.

Otra pequeña ventaja: no es necesario que .gitignore.

Si no fuera por eso, simplemente dejaría mi virtualenvs gitignored en el árbol del proyecto en sí para mantener las cosas relacionadas muy juntas.

Esto está bien ya que es probable que nunca reutilice un virtualenv dado en todos los proyectos.

0

Si usa pyenv install Python, entonces pyenv-virtualenv será una buena práctica. Si establece el archivo .python-version, puede activar o desactivar automáticamente el entorno virtual cuando cambie la carpeta de trabajo. Pyenv-virtualenv también puso todo el env virtual en la carpeta $HOME/.pyenv/versions.

Cuestiones relacionadas