mac activate activar python ubuntu virtualenv pip

activate - virtualenv python 3



Cambiar el nombre de una carpeta virtualenv sin romperla (8)

Creé una carpeta e inicialé una instancia de Virtualenv en ella.

$ mkdir myproject $ cd myproject $ virtualenv env

Cuando ejecuto (env)$ pip freeze , muestra los paquetes instalados como debería.

Ahora quiero renombrar myproject/ a project/ .

$ mv myproject/ project/

Sin embargo, ahora cuando corro

$ . env/bin/activate (env)$ pip freeze

dice que pip no está instalado. ¿Cómo cambio el nombre de la carpeta del proyecto sin romper el entorno?


(dentro de la carpeta del proyecto)

cd bin sed -i ''s/old_dir_name/new_dir_name/g'' *

No olvides desactivar y activar


Lo que creo es que "knowing why" matters more than "knowing how" . Entonces, este es otro enfoque para arreglar esto.

Cuando corres:

$ . env/bin/activate

en realidad ejecuta los siguientes comandos:

(Probé esto en /tmp )

VIRTUAL_ENV="/tmp/myproject/env" export VIRTUAL_ENV

Sin embargo, acaba de cambiar el nombre de myproject a project , por lo que el comando no se pudo ejecutar. Es por eso que dice que pip is not installed , porque ni usted ha instalado pip en el entorno global del sistema ni su pip virtualenv es de origen correcto.

Si quieres arreglar esto manualmente, esa es la forma:

  1. modifique /tmp/project/env/bin/activate con su editor de favoritos como Vim, generalmente en la Line 42

    VIRTUAL_ENV=''/tmp/myproject/env'' => VIRTUAL_ENV=''/tmp/project/env''

  2. modify /tmp/project/env/bin/pip en la Line 1

    #!/tmp/myproject/env/bin/python => #!/tmp/project/env/bin/python

Después de eso, active su env ambiente virtual nuevamente, y verá que su pip ha regresado.


Necesita ajustar su instalación para usar rutas relativas. virtualenv proporciona esto con la opción --relocatable . De los documentos :

Normalmente los entornos están vinculados a una ruta específica. Eso significa que no puede mover un entorno o copiarlo a otra computadora. Puede arreglar un entorno para que sea reubicable con el comando:

$ virtualenv - ENV reubicables

NOTA: ENV es el nombre del entorno virtual y debe ejecutarlo desde fuera del directorio ENV.

Esto hará que algunos de los archivos creados por setuptools o distribuyan use rutas relativas, y cambiará todos los scripts para usar activate_this.py en lugar de usar la ubicación del intérprete de Python para seleccionar el entorno.

Nota: debe ejecutar esto después de haber instalado cualquier paquete en el entorno. Si hace que un entorno sea reubicable, entonces instale un nuevo paquete, debe ejecutar virtualenv --relocatable nuevamente.


Otra forma de hacerlo que funcionó muchas veces sin problemas es virtualenv-clone :

pip install virtualenv-clone virtualenv-clone old-dir/env new-dir/env


Puede solucionar su problema siguiendo estos pasos:

  1. renombra tu directorio
  2. vuelva a ejecutar esto: $ virtualenv ../path/renamed_directory
  3. virtualenv corregirá las asociaciones de directorios mientras deja sus paquetes en su lugar
  4. $ scripts/activate
  5. $ pip freeze para verificar que tus paquetes estén en su lugar
  6. Una advertencia importante, si tiene alguna dependencia de ruta estática en los archivos de script en su directorio virtualenv, tendrá que cambiarlos manualmente.

Siempre instalo virtualenvwrapper para ayudar. Desde el indicador de shell:

pip install virtualenvwrapper

Hay una manera documentada en los documentos virtualenvwrapper - cpvirtualenv Esto es lo que haces. Asegúrese de estar fuera de su entorno y volver al indicador del shell. Escriba esto con los nombres requeridos:

cpvirtualenv oldenv newenv

Y luego, si es necesario:

rmvirtualenv oldenv

Para ir a su noticia nueva:

workon newenv


virtualenv --relocatable ENV no es una solución deseable. Supongo que la mayoría de la gente quiere la capacidad de cambiar el nombre de un virtualenv sin ningún efecto secundario a largo plazo.

Así que he creado una herramienta simple para hacer precisamente eso. La página del proyecto para virtualenv-mv describe con más detalle, pero esencialmente puedes usar virtualenv-mv misma manera que usarías una implementación simple de mv (sin ninguna opción).

Por ejemplo:

virtualenv-mv myproject project

Sin embargo, tenga en cuenta que acabo de hackear esto. Podría romperse en circunstancias inusuales (por ejemplo, virtualenvs enlazados) así que tenga cuidado (haga una copia de seguridad de lo que no puede permitirse perder) y avíseme si encuentra algún problema.


NOTA: como @jb. señala, esta solución solo se aplica a virtualenv s fácilmente (re) creados. Si un entorno requiere varias horas para instalar esta solución no es recomendable

Virtualenvs son geniales porque son fáciles de hacer y cambiar; evitan que se bloquee en una sola configuración. Si conoce los requisitos del proyecto, o puede obtenerlos, cree un nuevo virtualenv :

  • Crear un archivo requirements.txt

    (env)$ pip freeze > requirements.txt

    • Si no puede crear el archivo requirements.txt , verifique env/lib/pythonX.X/site-packages antes de eliminar el env original.
  • Eliminar el existente (env)

    deactivate && rm -rf env

  • Crear un nuevo virtualenv , activarlo e instalar requisitos

    virtualenv env && . env/bin/activate && pip install -r requirements.txt

Alternativamente, use virtualenvwrapper para facilitar las cosas ya que todos los virtualenvs se mantienen en una ubicación centralizada

$(old-venv) pip freeze > temp-reqs.txt $(old-venv) deactivate $ mkvirtualenv new-venv $(new-venv) pip install -r temp-reqs.txt $(new-venv) rmvirtualenv old-venv