salir activar python python-3.x virtualenv python-3.3 ubuntu-12.10

activar - virtualenv python windows



¿Por qué distribuir y pip instalar en mi virtualenv./local/bin? (3)

Creo y activo un virtualenv (venv) utilizando la forma integrada de hacerlo de Python 3.3:

$ python3.3 -m venv env $ source env/bin/activate

En este punto, python es el python en mi virtualenv, que espero:

(env) $ which python /my_home_directory/env/bin/python

Ahora quiero instalar Distribuir y pip, así que descargo los scripts de configuración y los ejecuto:

(env)$ wget http://python-distribute.org/distribute_setup.py (env)$ wget https://raw.github.com/pypa/pip/master/contrib/get-pip.py (env)$ python distribute_setup.py (env)$ python get-pip.py

Estos comandos se completan con éxito. En este punto, inspecciono mi venv para encontrar otro directorio llamado "local" que no estaba allí antes. env / local / bin contiene mis ejecutables easy_install y pip, y todavía tienen un alias de la instalación fácil y pip de mi sistema:

(env)$ ls env bin include lib local pyvenv.cfg (env)$ ls env/bin activate pydoc python python3 python3.3 (env)$ ls env/local/bin easy_install easy_install-3.3 pip pip-3.3 (env)$ which easy_install /usr/bin/easy_install (env)$ which pip /usr/bin/pip

Creo que esto es una desviación del comportamiento de Python 2.x. En este punto, espero que easy_install y pip utilicen las copias de virtualenv, y usarlas para instalar huevos las pondrá en virtualenv.

Yendo un poco más lejos, abrí abrir env / bin / activar para encontrar que env / bin está precedido a la ruta del sistema, pero env / local / bin no. Eso explica el comportamiento que estoy viendo. Puedo solucionar este problema editando env / bin / activar para agregar el directorio env / local / bin a la ruta, algo como:

_OLD_VIRTUAL_PATH="$PATH" PATH="$VIRTUAL_ENV/bin:$PATH" PATH="$VIRTUAL_ENV/local/bin:$PATH" # my new line export PATH

Entonces, ¿qué está pasando aquí? ¿Es esto un error, o me estoy perdiendo algo?

Estoy en Ubuntu 12.10 en caso de que eso haga una diferencia.


Está en los documentos de Python.

''/ usr / local'' es el exec_prefix predeterminado. Lea los documentos de venv para obtener detalles sobre cómo cambiar el comportamiento predeterminado. Incluso hay un ejemplo allí que muestra cómo hacer un venv.EnvBuilder que instala distribuye y pip para usted.

Si encuentra documentos distribuidos, por favor hágamelo saber ;-)


Tengo la sensación de que hay un error en los paquetes python de Ubuntu o se distribuye en algún lugar ... pero no lo he rastreado (y no estoy seguro de que me importe).

Por cualquier motivo, la variable de entorno VIRTUAL_ENV debe configurarse como la raíz de virtualenv para que se distribuya y pip se instale correctamente.

Esta esencia , adoptada del ejemplo de código de Vinay Sajip en los documentos de Python 3, establece dicha variable; Tanto la distribución como el pip se instalarán correctamente al usarlo.


Yo tuve el mismo problema. En el archivo de script activate , necesito agregarlo como primera línea (de cource después de #!... ):

unset PYTHON_PATH