Intento implementar un paquete de Python pip
en un entorno virtual en una máquina Ubuntu, pero encuentro un problema relacionado con los permisos. Por ejemplo:
(TestVirtualEnv)test@testServer:~$ pip install markdown2
termina por:
error: no se pudo crear '/home/test/virtualenvs/TestVirtualEnv/lib/python3.3/site-packages/markdown2.py': Permiso denegado
No puedo sudo
, ya que instalará el paquete globalmente y no dentro del entorno virtual. Yo chown
ed site-packages
; ls
muestra sólo directorios relacionados con easy_install
, pip
y setuptools
, y nada relacionados con Markdown.
¿Cómo implementar un paquete en un entorno virtual pip
sin encontrar errores relacionados con los permisos?
python
virtualenv
pip
Arseni Mourzenko
fuente
fuente
sudo
?sudo
.sudo
. De hecho, el paquete se instala correctamente ahora. Por favor, ¿puede promover su comentario a una respuesta para que pueda aceptarlo?virtualenv
directorio, porque puede activarvirtualenv
con otro usuario, pero no le permitirá instalar ningún paquete y le dará permiso de acceso.Respuestas:
virtualenv
Es posible que se produzcan problemas de permisos al crearvirtualenv
comosudo
y luego operar sinsudo
envirtualenv
.Como se descubrió en el comentario de su pregunta, la solución aquí es crear el
virtualenv
sinsudo
para poder trabajar (especialmente escribir) en él sinsudo
.fuente
virtualenv
sudo sin?sudo
, consulte la respuesta de @vingtoft para saber cómo solucionarlo fácilmente sin volver a crearloSolución:
Si creó virtualenv como root, ejecute el siguiente comando:
Esto probablemente solucionará su problema.
Salud
fuente
En mi caso, estaba usando
mkvirtualenv
, pero no le dije que iba a usar python3. Tengo este error:Funcionó después de especificar python3:
fuente
No creé mi virtualenv usando sudo. Así que la respuesta de Sebastian no se aplicó a mí. Mi proyecto se llama
utils
. Revisé elutils
directorio y vi esto:Como puede ver,
utils.egg-info
es propiedad deroot
notmacuser
. Por eso me estaba dandopermission denied
error. También tuve que eliminarlo,/Users/macuser/.virtualenvs/armoury/lib/python2.7/site-packages/utils.egg-link
ya que también lo creóroot
. Lo hice depip install -e .
nuevo después de quitarlos, y funcionó.fuente
Si creó un entorno virtual usando root, use este comando
le dará acceso de root y luego activará su entorno virtual usando este
fuente
No activó el entorno virtual antes de usar pip.
Pruébelo con:
Y luego use pip -r requirements.txt en su carpeta principal
fuente
También me pasó esto (por accidente) después de crear un nuevo venv mientras estaba dentro de un entorno virtual existente. una forma fácil de diagnosticar esto sería ver dónde
python
está enlazado simbólicamente, es decir, ejecutar:y asegúrese de que apunte al binario de Python apropiado. Para la mayoría de los sistemas, será
/usr/bin/python
o/usr/bin/python3
. mientras que si apunta a un entorno virtual existente será algo así como/home/youruser/somedir/bin/python
. si es lo último, sugiero recrear el venv mientras me aseguro de que no está "dentro" de ningún virtualenv existente (es decir, ejecutardeactivate
)fuente
Mientras crea virtualenv, si usa sudo, el directorio se crea con privilegios de root, por lo que cuando intente instalar un paquete con un usuario que no sea sudo, no tendrá permiso para instalarlo. Así que siempre cree virtualenv sin sudo e instálelo sin sudo.
También puede copiar paquetes instalados en Python global a virtualenv.
fuente