2012-07-20 8 views
9

Para la activación hay un script que activa un virtualenv desde un interpeter python que ya se está ejecutando usando execfile('C:/path/to/virtualev/Scripts/activate_this.py', dict(__file__='C:/path/to/virtualev/Scripts/activate_this.py')). Sin embargo, como todavía puedo importar paquetes que no están en el virtualenv del script python actual, estoy confundido acerca de cómo funciona.
Para la desactivación no hay ninguna secuencia de comandos de Python.
¿Qué debo hacer?¿Cómo activar/desactivar un virtualenv del código python?

+0

No entiendo lo que quiere decir con desactivación. si no quieres el virtualenv ... solo borra esa carpeta completa. eso es todo – Surya

+0

cuando escribimos programas en el editor (digamos eclipse) .. alli la ruta python es por defecto no la virtualenv .. entonces, usted puede usar paquetes que no están en virtualenv. eso es todo – Surya

+1

@Surya Al desactivar un virtualenv significa que estás volviendo al interpeter principal de python. –

Respuesta

6

De part of the VirtualEnv homepage.

Debe utilizar el intérprete de Python personalizado para instalar las bibliotecas. Pero para usar librerías, solo tiene que estar seguro de que la ruta es correcta. Hay una secuencia de comandos disponible para corregir la ruta. Se puede configurar el entorno de como:

activate_this = '/path/to/env/bin/activate_this.py' 
execfile(activate_this, dict(__file__=activate_this)) 
+0

¿Cuál es el equivalente de Python 3 de esto? – Pieter

+2

@Pieter http://stackoverflow.com/questions/436198/what-is-an-alternative-to-execfile-in-python-3-0 – satoru

-3

Esto tiene mala idea. Está intentando modificar el entorno de su script en este script. Por favor explica por qué?

¿No puedes hacerlo jerárquicamente? Use una secuencia de comandos para ejecutar diferentes scripts en diferentes virtualenvs.

+1

Estoy desarrollando un test runner como tox (solo que muy diferente en su enfoque. No estoy reinventando la rueda) que ejecuta el conjunto de pruebas bajo diferentes entornos virtuales usando diferentes dependencias e interpeters de python. Por lo tanto, debo tener una forma programática para activar y desactivar virtualenvs. –

-4

en la línea de comandos, escriba la palabra 'desactivar'

+1

Desde el código de Python. No desde la línea de comando. –

0

Si desea ejecutar un programa fuera del virtualenv, basta con ejecutar el ejecutable de Python sistema (por ejemplo, /usr/bin/python) en lugar de uno en el virtualenv.

Cuestiones relacionadas