pip install -r: OSError: Permiso denegado

Estoy tratando de configurar Django .

Cuando ejecuto pip install -r requirements.txt , obtengo la siguiente excepción:

 Installing collected packages: amqp, anyjson, arrow, beautifulsoup4, billiard, boto, braintree, celery, cffi, cryptography, Django, django-bower, django-braces, django-celery, django-crispy-forms, django-debug-toolbar, django-disqus, django-embed-video, django-filter, django-merchant, django-pagination, django-payments, django-storages, django-vote, django-wysiwyg-redactor, easy-thumbnails, enum34, gnureadline, idna, ipaddress, ipython, kombu, mock, names, ndg-httpsclient, Pillow, pyasn1, pycparser, pycrypto, PyJWT, pyOpenSSL, python-dateutil, pytz, requests, six, sqlparse, stripe, suds-jurko Cleaning up... Exception: Traceback (most recent call last): File "/usr/lib/python2.7/dist-packages/pip/basecommand.py", line 122, in main status = self.run(options, args) File "/usr/lib/python2.7/dist-packages/pip/commands/install.py", line 283, in run requirement_set.install(install_options, global_options, root=options.root_path) File "/usr/lib/python2.7/dist-packages/pip/req.py", line 1436, in install requirement.install(install_options, global_options, *args, **kwargs) File "/usr/lib/python2.7/dist-packages/pip/req.py", line 672, in install self.move_wheel_files(self.source_dir, root=root) File "/usr/lib/python2.7/dist-packages/pip/req.py", line 902, in move_wheel_files pycompile=self.pycompile, File "/usr/lib/python2.7/dist-packages/pip/wheel.py", line 206, in move_wheel_files clobber(source, lib_dir, True) File "/usr/lib/python2.7/dist-packages/pip/wheel.py", line 193, in clobber os.makedirs(destsubdir) File "/usr/lib/python2.7/os.py", line 157, in makedirs mkdir(name, mode) OSError: [Errno 13] Permission denied: '/usr/local/lib/python2.7/dist-packages/amqp-1.4.6.dist-info' 

¿Qué está mal y cómo soluciono esto?

Opción a) Crea un virtualenv, actívalo e instala:

 virtualenv .venv source .venv/bin/activate pip install -r requirements.txt 

Opción b) Instalar en su homedir:

 pip install --user -r requirements.txt 

Mi recomendación usa la opción segura (a), para que los requisitos de este proyecto no interfieran con los requisitos de otros proyectos.

Realmente deberíamos dejar de aconsejar el uso de sudo con pip install . Es mejor primero probar pip install --user . Si esto falla, mira el post superior aquí .

La razón por la que no debes usar sudo es la siguiente:

Cuando ejecuta pip con sudo , está ejecutando un código de Python arbitrario desde Internet como usuario root, lo que es un riesgo de seguridad bastante grande. Si alguien pone un proyecto malicioso en PyPI y lo instala, le da a un atacante acceso raíz a su máquina.

Solo aclaro lo que funcionó para mí después de mucho dolor en Linux (basado en Ubuntu) en los permisos de permiso denegado, y aprovechando la respuesta de Bert de arriba, ahora uso …

 $ pip install --user  

o si ejecuta pip en un archivo de requisitos …

 $ pip install --user -r requirements.txt 

y estos funcionan de manera confiable para cada instalación de pip, incluida la creación de entornos virtuales.

Sin embargo, la solución más limpia en mi experiencia posterior ha sido instalar python-virtualenv y virtualenvwrapper con sudo apt-get install a nivel del sistema.

Luego, dentro de los entornos virtuales, use pip install sin el indicador --user Y sin sudo . Mucho más limpio, seguro y fácil en general.

Está intentando instalar un paquete en la ruta de todo el sistema sin tener el permiso para hacerlo.

  1. En general, puede usar sudo para obtener temporalmente permisos de superusuario bajo su responsabilidad para instalar el paquete en la ruta de todo el sistema:

     sudo pip install -r requirements.txt 

    Encuentre más sobre el sudo aquí .

  2. Si no desea realizar cambios en todo el sistema, puede instalar el paquete en su ruta por usuario utilizando el indicador --user .

    Todo lo que se necesita es:

     pip install --user runloop requirements.txt 
  3. Finalmente, para un control aún más preciso , también puede usar un virtualenv , que podría ser la solución superior para un entorno de desarrollo, especialmente si está trabajando en múltiples proyectos y desea realizar un seguimiento de las dependencias de cada uno.

    Después de activar tu virtualenv con

    $ my-virtualenv/bin/activate

    el siguiente comando instalará el paquete dentro de virtualenv (y no en la ruta de todo el sistema):

    pip install -r requirements.txt

El usuario no tiene permiso de escritura para algunas rutas de instalación de Python. Usted puede dar el permiso por:

 sudo chown -R $USER /absolute/path/to/directory 

Por lo tanto, debe dar permiso, luego intente instalarlo nuevamente, si tiene nuevas rutas, también debe dar permiso:

 sudo chown -R $USER /usr/local/lib/python2.7/ 

Entonces, recibí el mismo error exacto por una razón completamente diferente. Debido a un error de Homebrew + pip totalmente separado, pero conocido, seguí esta solución que se encuentra en los documentos de ayuda de Google Cloud, donde crea un archivo .pydistutils.cfg en su directorio de inicio. Este archivo tiene una configuración especial que solo debe utilizar para la instalación de ciertas bibliotecas. Debería haber eliminado ese archivo disutils.cfg después de instalar los paquetes, pero me olvidé de hacerlo. Así que la solución para mí fue en realidad …

rm ~/.pydistutils.cfg .

Y luego todo funcionó como normal. Por supuesto, si tiene alguna configuración en ese archivo por una razón real, entonces no querrá simplemente remover ese archivo. Pero en caso de que alguien más hiciera esa solución, y se olvidó de eliminar ese archivo, ¡esto me sirvió de mucho!

Ejecute chmod -0777 -R en el entorno virtual y ejecute pip install -r requirements.txt chmod -0777 -R