Intento implementar un paquete de Python pipen 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 chowned site-packages; lsmuestra sólo directorios relacionados con easy_install, pipy setuptools, y nada relacionados con Markdown.
¿Cómo implementar un paquete en un entorno virtual pipsin 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?virtualenvdirectorio, porque puede activarvirtualenvcon otro usuario, pero no le permitirá instalar ningún paquete y le dará permiso de acceso.Respuestas:
virtualenvEs posible que se produzcan problemas de permisos al crearvirtualenvcomosudoy luego operar sinsudoenvirtualenv.Como se descubrió en el comentario de su pregunta, la solución aquí es crear el
virtualenvsinsudopara poder trabajar (especialmente escribir) en él sinsudo.fuente
virtualenvsudo 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é elutilsdirectorio y vi esto:Como puede ver,
utils.egg-infoes propiedad derootnotmacuser. Por eso me estaba dandopermission deniederror. También tuve que eliminarlo,/Users/macuser/.virtualenvs/armoury/lib/python2.7/site-packages/utils.egg-linkya 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
pythonestá 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/pythono/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