pip install -r requirements.txt
falla con la excepción a continuación OSError: [Errno 13] Permission denied: '/usr/local/lib/...
. ¿Qué pasa y cómo soluciono esto? (Estoy tratando de configurar Django )
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'
python
permissions
pip
install
RunLoop
fuente
fuente
Respuestas:
Opción a) Cree un virtualenv, actívelo e instale:
Opción b) Instalar en su homedir:
Mi recomendación utiliza la opción segura (a), para que los requisitos de este proyecto no interfieran con los requisitos de otros proyectos.
fuente
sudo:pip: command not found
en mi instancia de aws ec2 cuando ejecuté este comando. Por favor ayuda.sudo
consejo. a pesar de que funciona ahora, te dará muchos dolores de cabeza en el futuro.Realmente deberíamos dejar de recomendar el uso de
sudo
withpip install
. Es mejor intentarlo primeropip install --user
. Si esto falla, eche un vistazo a la publicación superior aquí .La razón por la que no debe usar
sudo
es la siguiente:Cuando ejecuta pip con
sudo
, está ejecutando código arbitrario de Python desde Internet como usuario root, lo cual es un riesgo de seguridad bastante grande. Si alguien coloca un proyecto malicioso en PyPI y usted lo instala, le da acceso de atacante a su máquina.fuente
sudo x install
, para todosx
(incluidox = make
).--user
instala el paquete en su directorio de inicio, en lugar de la raíz. Instalar algo en esta ubicación no requiere ningún privilegio adicional.sudo
fue eliminada hace un año. Esta respuesta es obsoleta; revísela y actualícela. También debe mencionar las instalaciones y permisos por usuario frente a todo el sistema. No use su respuesta para criticar directamente otras respuestas, que tenderán a quedar obsoletas rápidamente.Está intentando instalar un paquete en la ruta de todo el sistema sin tener el permiso para hacerlo.
En general, puede usarsudo
para obtener temporalmente permisos de superusuario bajo su responsabilidad para instalar el paquete en la ruta de todo el sistema:Encuentra más sobresudo
aquí .En realidad, esta es una mala idea y no hay un buen caso de uso, vea el comentario de @ wim.
Si no desea realizar cambios en todo el sistema, puede instalar el paquete en su ruta por usuario utilizando el
--user
indicador.Todo lo que se necesita es:
Finalmente, para un control aún más fino , 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
fuente
pyenv/pipenv
, deberíamos mencionarlos, en lugar devirtualenv
(oconda-env
) b) sudo considerado dañino, y ver las otras respuestas por qué. Ponga la respuesta basada en env primero, y la sudo última, con un gran descargo de responsabilidad.sudo pip install -r requirements.txt
nunca es correcto El entorno python del sistema pertenece al sistema, punto . Si instala más cosas pitón en el sistema, lo hacen con el gestor de paquetes solamente (por ejemplosudo yum install
,apt-get
, etc ...) ya que esos repositorios deben tener versiones seguras y compatibles de bibliotecas en vano.sudo make install
, generalmente compilado + enlazado, no es realmente análogo a unsudo pip install
ya que la instalación en el sistema Python env puede invalidar las dependencias . Supongamos que hay un servicio del sistemapython-frobnicator
, que depende defroblib
(esto también estará en el administrador de paquetes y se anclaría a una versión compatible), y luegosudo pip install
alguna otra aplicación o lib que dependa de "froblib > 1.2
". Pip felizmente "actualizará" la versión del sistemafroblib
con una más nueva, que puede ser incompatible / no probada y romper el sistema.Solo aclarando 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 anterior, ahora uso ...
o si ejecuta pip en un archivo de requisitos ...
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 adicional ha sido instalar
python-virtualenv
yvirtualenvwrapper
consudo apt-get install
el nivel del sistema.Luego, dentro de entornos virtuales, use
pip install
sin la--user
bandera Y sinsudo
. Mucho más limpio, más seguro y más fácil en general.fuente
pip install --user -r requirements.txt
El usuario no tiene permiso de escritura para algunas rutas de instalación de Python. Puede dar el permiso de la siguiente manera:
Por lo tanto, debe dar permiso, luego intente instalarlo nuevamente, si tiene nuevas rutas también debe dar permiso:
fuente
/usr
normalmente serían propiedad de root, en estos días. El uso recursivo de allí podría arruinar su sistema. EVITAR .Si necesita permisos, no puede usar 'pip' con 'sudo'. Puedes hacer un truco para poder usar 'sudo' e instalar el paquete. Simplemente coloque 'sudo python -m ...' delante de su comando pip.
fuente
Entonces, obtuve este mismo error exacto por una razón completamente diferente. Debido a un error pip de Homebrew + totalmente separado, seguí esta solución que figura en los documentos de ayuda de Google Cloud, donde creas un archivo .pydistutils.cfg en tu directorio de inicio. Este archivo tiene una configuración especial que solo se supone que debes usar para instalar ciertas bibliotecas. Debería haber eliminado ese archivo disutils.cfg después de instalar los paquetes, pero olvidé hacerlo. Entonces la solución para mí fue en realidad solo ...
rm ~/.pydistutils.cfg
.Y luego todo funcionó normalmente. Por supuesto, si tiene alguna configuración en ese archivo por una razón real, entonces no querrá simplemente corregir ese archivo. Pero en caso de que alguien más haya hecho esa solución, y se haya olvidado de eliminar ese archivo, ¡esto fue el truco para mí!
fuente
Es debido problema de permiso,
por defecto sería
/usr/local/lib/python2.7/
o tratar,
y luego decir,
pip install -r requirements.txt
esto se instalará dentro de su entornono digas,
sudo pip install -r requirements.txt
esto se instalará en la ruta arbitraria de Python.fuente