¿Dónde se deben crear virtualenvs?


Estoy confundido en cuanto a dónde debo poner mis virtualenvs.

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

Luego hice un cd en el directorio djangoproject y ejecuté el comando "virtualenv env" que creó el directorio de entorno virtual al mismo nivel que el directorio interno "djangoproject".

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

Tengo la impresión de que la mayoría de las personas mantienen todos sus virtualenvs juntos en un directorio completamente diferente, por ejemplo ~/virtualenvs, y luego usan virtualenvwrapper para cambiar de un lado a otro entre ellos.

¿Hay una manera correcta de hacer esto?

4 answers

Muchas personas usan 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, usted podría hacer:

mkvirtualenv djangoproject

Y después:

workon djangoproject

Probablemente sea una mala idea mantener el directorio virtualenv en el propio proyecto, ya que no desea distribuirlo (puede ser específico de su computadora o sistema operativo). En su lugar, mantener un requisitos.archivo txt usando pip :

pip freeze > requirements.txt

Y distribuir eso. Esto permitirá a otros que usen su proyecto reinstalar todos los mismos requisitos en su virtualenv con:

pip install -r requirements.txt
 93
Author: David Robinson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-08-27 00:11:37

Cambiar la ubicación del directorio virtualenv lo rompe

Esta es una gran ventaja 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, mover la ubicación del proyecto romperá el virtualenv.

Ver: Cambiar el nombre de una carpeta virtualenv sin romperla

Hay --relocatable, pero se sabe que no es perfecto.

Otra ventaja menor: no tiene que .gitignore.

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

Esto está bien ya que es probable que nunca reutilice un virtualenv dado entre proyectos.

 14
Author: Ciro Santilli 新疆改造中心 六四事件 法轮功,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-01 07:48:21

El lugar generalmente aceptado para colocarlos es el mismo lugar que la instalación predeterminada de virtualenvwrapper los coloca: ~/.virtualenvs

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

 4
Author: Emmett J. Butler,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-08-29 19:06:42

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

 0
Author: Aston,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-13 11:49:11