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
python
installation
packages
virtualenv
pip
Luke Sapan
fuente
fuente
easy_install
?which easy_install
para ver si está utilizando su virtualenv o el sistema.which pip
rinde? ¿Y vespip
dentromyenv.env/bin/
?Respuestas:
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.)
deactivate
tu v-env. Después de la corrección, debe reiniciar v-env, por lo que también podría hacerlodeactivate
ahora. ¿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.
fuente
grep -rli '/path/to/old/env/bin' * | xargs -i@ sed -i 's/\/path\/to\/old\/env\/bin/\/path\/to\/new\/env\/bin/g' @
. fuenteYo 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 ...
fuente
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.
fuente
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
para crear el env.
fuente
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/' *
fuente
En mi caso, había definido dos alias (para superar algún otro problema en la versión predeterminada de Python):
Y esto estaba causando los mismos síntomas:
Al eliminar los alias se resolvió el problema (antes o después de crear virtualenv)
fuente
Las llamadas
sudo pip
llamarán pip global y no pip en su virtualenv. Active / trabaje en su entorno y luego simplemente llamepip
, nosudo pip
, esto puede solucionar su problema, como lo hizo con el mío.fuente