python - instalar - pip install django version
error de instalaciĆ³n de pip con: OSError:[Errno 13] Permiso denegado en el directorio (7)
Opción a) Cree un virtualenv, actívelo e instale:
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 utiliza la opción segura (a), para que los requisitos de este proyecto no interfieran con los requisitos de otros proyectos.
pip install -r requirements.txt
OSError: [Errno 13] Permission denied: ''/usr/local/lib/...
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''
El usuario no tiene permiso de escritura para algunas rutas de instalación de Python. Puede dar el permiso de la siguiente manera:
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, obtuve este mismo error exacto por una razón completamente diferente. Debido a un error Homebrew + pip totalmente separado, pero conocido, seguí esta solución enumerada 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ó de manera normal. 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í!
Es debido problema de permiso,
sudo chown -R $USER /path to your python installed directory
por defecto sería
/usr/local/lib/python2.7/
o tratar,
pip install --user -r package_name
y luego diga,
pip install -r requirements.txt
esto se instalará dentro de su entorno
no digas,
sudo pip install -r requirements.txt
esto se instalará en la ruta arbitraria de python.
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:sudo pip install -r requirements.txt
Encuentra más sobre
sudo
here .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 indicador
--user
.Todo lo que se necesita es:
pip install --user runloop requirements.txt
-
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
Realmente deberíamos dejar de recomendar el uso de
sudo
con
pip install
.
Es mejor intentar primero
pip install --user
.
Si esto falla, eche un vistazo a la publicación superior
.com/questions/33004708/…
.
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 a un atacante acceso root a su máquina.
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 ...
$ pip install --user <package-name>
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 adicional
ha sido instalar
python-virtualenv
y
virtualenvwrapper
con
sudo apt-get install
a nivel del sistema.
Luego, dentro de entornos virtuales, use
pip install
sin el indicador de
--user
Y
sin
sudo
.
Mucho más limpio, más seguro y más fácil en general.