Cómo evitar el “Permiso denegado” cuando se usa pip con virtualenv

Intento implementar un paquete Python con pip en un entorno virtual en una máquina Ubuntu, pero encuentro un problema relacionado con 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 de forma global y no dentro del entorno virtual. chown site-packages ; Muestra solo directorios relacionados con easy_install , pip y setuptools , y nada relacionado con Markdown.

¿Cómo implementar un paquete en un entorno virtual con pip sin encontrar errores relacionados con permisos?

virtualenv problemas de permiso virtualenv pueden ocurrir cuando crea el virtualenv como sudo y luego opera sin sudo en el virtualenv .

Como se descubrió en el comentario de su pregunta, la solución aquí es crear virtualenv sin sudo para poder trabajar (especialmente escribir) en él sin sudo .

Solución:

Si creó virtualenv como raíz, ejecute el siguiente comando:

 sudo chown -R your_username:your_username path/to/virtuaelenv/ 

Esto probablemente solucionará tu problema.

Aclamaciones

No creé mi virtualenv usando sudo. Entonces la respuesta de Sebastian no se aplicaba a mí. Mi proyecto se llama utils . Comprobé el directorio de utils y vi esto:

 -rw-r--r-- 1 macuser staff 983 6 Jan 15:17 README.md drwxr-xr-x 6 root staff 204 6 Jan 14:36 utils.egg-info -rw-r--r-- 1 macuser staff 31 6 Jan 15:09 requirements.txt 

Como puede ver, utils.egg-info es propiedad de root no macuser . Es por eso que me estaba dando permission denied error permission denied . También tuve que eliminar /Users/macuser/.virtualenvs/armoury/lib/python2.7/site-packages/utils.egg-link ya que también fue creado por root . Hice pip install -e . de nuevo después de eliminarlos, y funcionó.

En mi caso, estaba usando mkvirtualenv , pero no dije que iba a estar usando python3. Tengo este error:

 mkvirtualenv hug pip3 install hug -U .... error: could not create '/usr/lib/python3.4/site-packages': Permission denied 

Funcionó después de especificar python3:

 mkvirtualenv --python=/usr/bin/python3 hug pip3 install hug -U 

No activó el entorno virtual antes de usar pip.

Pruébalo con:

 $(your venv path) . bin/activate 

Y luego use pip -r requirements.txt en su carpeta principal

Al crear virtualenv si usa sudo, el directorio se crea con privilegios de administrador. Por lo tanto, cuando intente instalar un paquete con un usuario que no sea sudo, no tendrá permiso para instalarlo. Así que siempre crea virtualenv sin sudo e instálalo sin sudo.

También puede copiar paquetes instalados en python global a virtualenv.

 cp -r /lib/python/site-packages/* virtualenv/lib/python/site-packages/