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