PIP no se instala en el directorio virtualenv

10

Estoy intentando instalar django en un virtualenv que ya existe.

Siguiendo las instrucciones enumeradas en el sitio web de instalación de pip aquí , ejecuté lo siguiente desde SSH.

name@server:~$ . myenv.env/bin/activate
(myenv.env)nam@server:~$ pip install django

Sin embargo, en la parte inferior de la instalación, estoy viendo esto:

creating /usr/local/lib/python2.7/dist-packages/django

error: could not create '/usr/local/lib/python2.7/dist-packages/django': Permission denied

Parece que está intentando instalarlo en el directorio global. No tengo privilegios de sudo. ¿Estoy haciendo algo mal aquí?

Actualización: $ PATH = /var/django/myenv.env/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

Luke Sapan
fuente
¿Funciona correctamente para otros paquetes? ¿Tienes el mismo problema si lo usas easy_install?
Larsks
Mismo problema con otros paquetes. Y creo que easy_install requiere sudo y se instalaría en el directorio global.
Luke Sapan
No, configurar un virtualenv te facilita la instalación y el pip. Puede escribir which easy_installpara ver si está utilizando su virtualenv o el sistema.
larsks
En realidad, ¿estás seguro de que estás ejecutando pip desde dentro del virtualenv? ¿Qué which piprinde? ¿Y ves pipdentro myenv.env/bin/?
Larsks
Veo pip dentro de myenv.env / bin /. Acabo de intentar "activar" mi env nuevamente, y a pesar de estar en ese modo, "qué pip" y "qué instalación fácil" devuelven "usr / local / bin / pip" y "usr / bin / easy_install" respectivamente.
Luke Sapan

Respuestas:

6

Lo siento por un año de respuesta tardía! Tuve el mismo problema y lo solucioné, no sé si cambiaste el nombre de un directorio después de crear el entorno virtual, lo hice. Si es así, entonces esto es lo que hice.

1.) deactivatetu v-env. Después de la corrección, debe reiniciar v-env, por lo que también podría hacerlo deactivateahora. ¿Correcto?

2.) Ahora, dado que creamos el v-env en una ruta diferente, tenemos que cambiar las variables de ruta estática en estos archivos.

Para que pip funcione, no necesita hacer esto, pero igual lo hago. bin/activate` bin/activate.csh` bin/activate.fish

bin/pip` bin/pip2` bin/pip2.7

bin/easy_install, bin/easy_install2.7

3.) Para que pip funcione, debe corregir el intérprete de python en el archivo pip, esto también tiene una ubicación de intérprete estática establecida por virtualenv en el proceso de creación.

4.) Para que easy_install funcione? Lo has adivinado, arregla la ubicación del intérprete.

Espero que esto haya ayudado a cualquier persona que lea esto en el futuro. Lo siento OP, por llegar tarde.

Crujiente
fuente
Sí, eso fue exactamente. En mi caso, pude recrear el virtualenv desde cero y eso lo resolvió.
Luke Sapan
Me alegro de ser de ayuda
Crujiente
Estoy muy contento de finalmente encontrar una respuesta. Para mí, usar sed en la carpeta venv hizo el trabajo mucho más fácil. Algo así como grep -rli '/path/to/old/env/bin' * | xargs -i@ sed -i 's/\/path\/to\/old\/env\/bin/\/path\/to\/new\/env\/bin/g' @. fuente
Keith
Usted dice: "Para que pip funcione, debe corregir el intérprete de python en el archivo pip", ¿dónde y cómo se hace esto?
Dave
3

Yo tuve el mísmo problema.

Eliminé el entorno virtual y creé uno nuevo, que resolvió el problema.

Probablemente no sea la respuesta que esperabas, pero como es la única ...

marca
fuente
1

Bueno, sin privilegios administrativos, usted está muy limitado en lo que puede hacer. Si no se le permite elevarse o pedir privilegios, la mejor manera de hacerlo sería crear otro entorno, crear un archivo require.txt, descargar todos los paquetes que necesita en su máquina (django) que también se encuentra en su archivo de requisitos y debería funcionar.

seguro212
fuente
0

Tuve el mismo problema En mi caso, la razón fue que el entorno virtual creado era para python2.7 (el valor predeterminado) pero estaba usando pip3 para instalar un paquete. pip3 no estaba presente en mi virtualenv, por lo que se convirtió en el global. Para mí la solución fue usar

virtualenv flask --python=python3

para crear el env.

Adversus
fuente
0

Me encontré con el mismo problema causado por el cambio de nombre del usuario. La respuesta de Crispy es totalmente correcta. Y mi solución puede ser más conveniente.

configuraciones:
1. Ingrese la ruta bin de su entorno virtual, como cd ~/virenv_dir/bin
2. Cambie el nombre de todos los archivos en este directorio usando el comando sed.sed -i 's/old_name/new_name/' *

xialu
fuente
0

En mi caso, había definido dos alias (para superar algún otro problema en la versión predeterminada de Python):

alias pip='/usr/bin/pip3'
alias python='/usr/bin/python3'

Y esto estaba causando los mismos síntomas:

[Errno 13] Permission denied: '/usr/lib/python3.6/site-packages'

Al eliminar los alias se resolvió el problema (antes o después de crear virtualenv)

coderazzi
fuente
0

Las llamadas sudo pipllamarán pip global y no pip en su virtualenv. Active / trabaje en su entorno y luego simplemente llame pip, no sudo pip, esto puede solucionar su problema, como lo hizo con el mío.

Milton Walker
fuente