Intenté instalar Django con pip install Django==1.11.4
pero me enfrento a este error todo el tiempo:
Exception:
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/pip/basecommand.py", line 215, in main
status = self.run(options, args)
File "/usr/local/lib/python2.7/dist-packages/pip/commands/install.py", line 342, in run
prefix=options.prefix_path,
File "/usr/local/lib/python2.7/dist-packages/pip/req/req_set.py", line 784, in install
**kwargs
File "/usr/local/lib/python2.7/dist-packages/pip/req/req_install.py", line 851, in install
self.move_wheel_files(self.source_dir, root=root, prefix=prefix)
File "/usr/local/lib/python2.7/dist-packages/pip/req/req_install.py", line 1064, in move_wheel_files
isolated=self.isolated,
File "/usr/local/lib/python2.7/dist-packages/pip/wheel.py", line 345, in move_wheel_files
clobber(source, lib_dir, True)
File "/usr/local/lib/python2.7/dist-packages/pip/wheel.py", line 316, in clobber
ensure_dir(destdir)
File "/usr/local/lib/python2.7/dist-packages/pip/utils/__init__.py", line 83, in ensure_dir
os.makedirs(path)
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/pytz-2017.2.dist-info'
------------Respuesta------------
De forma predeterminada, pip se instala en /usr/local, que necesita permisos sudo. En su lugar, siempre que trabaje con módulos de Python, utilice virtualenv. Es bastante fácil:
Instalar Python virtualenv globalmente
sudo pip install virtualenv
Crear un entorno virtual
virtualenv Venv
Activa tu entorno virtual
source Venv/bin/activate
Instalar Django localmente en virtualenv
pip install django
De esta manera no tienes que preocuparte por modificar los módulos globales de Python y es mucho más seguro.
------------Respuesta------------
La respuesta de @Sanchit es acertada. El entorno virtual es el camino a seguir si gestionas diferentes proyectos en tu máquina y no quieres que las dependencias de un proyecto interfieran con el otro.
En caso de que desee instalar un paquete en su sistema con pip instalado localmente sin un entorno virtual mientras recibe un error de permiso denegado, intente instalar el paquete solo para el usuario actual. Esto se puede hacer agregando el indicador --user a su comando de instalación de pip.
Por ejemplo:
pip install Django==1.11.4 --user
Además, no instalaría paquetes pip usando permisos sudo por dos razones:
Es posible que SUDO no esté disponible para todos los usuarios.
*SUDO parecepara instalar paquetes solo para el usuario root y no para el usuario actual (al menos en mi caso: Ubuntu 16.04, OpenStack Cloud Instance)
*Puede que no se aplique a usted. Me ha resultado difícil reproducirlo.
------------Respuesta------------
Pip iEstoy intentando instalarlo en la carpeta /usr/local que requiere permiso de administrador. Si eres administrador y quieres instalarlo, ejecuta el mismo comando con sudo:
sudo pip install Django==1.11.4
Te pedirá tu contraseña y eso debería ser todo.
editar: también puedes usar la opción --user de pip, pero solo estará disponible para el usuario actual.