linux - must - psycopg2 example
¿Por qué no tengo permiso para instalar psycopg2 en un virtualenv (2)
Mi objetivo es servir una aplicación Django de hello world que usa postgres en una instancia de EC2 con Ubuntu. Entré a través de ssh y cloné un repositorio de git que contenía un proyecto de Django con este requirements.txt :
Django==1.8.2
djangorestframework==3.1.2
psycopg2==2.6
Creé un virtualenv y luego, cuando ejecuté (ec2_deploy_test)ubuntu@ip-172-31-22-100:~/ec2-deploy-test$ pip install -r requirements.txt
, esta excepción fue lanzada:
Recopilación de psycopg2 == 2.6 (de -r requirements.txt (línea 3)) /home/ubuntu/Envs/ec2_deploy_test/local/lib/python2.7/site-packages/pip/ vendor / requests / packages / urllib3 / util / ssl .py: 90: AdvertcurePlatformWarning: un verdadero objeto SSLContext no está disponible. Esto evita que urllib3 configure SSL correctamente y puede hacer que fallen ciertas conexiones SSL. Para obtener más información, consulte https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning . Inseguro Descarga de la plataforma Descarga psycopg2-2.6.tar.gz (367kB) 100% | ████████████████████████████████ | 368kB 785kB / s Ruedas de construcción para paquetes recogidos: psycopg2 Excepción: Traza (última llamada más reciente): Archivo "/home/ubuntu/Envs/ec2_deploy_test/local/lib/python2.7/site-packages/pip/basecommand.py" , línea 223, en estado principal = self.run (opciones, args) Archivo "/home/ubuntu/Envs/ec2_deploy_test/local/lib/python2.7/site-packages/pip/commands/install.py", línea 291 , en ejecutar wb.build (autobuilding = True) Archivo "/home/ubuntu/Envs/ec2_deploy_test/local/lib/python2.7/site-packages/pip/wheel.py", línea 753, en compilación ensure_dir (output_dir) Archivo "/home/ubuntu/Envs/ec2_deploy_test/local/lib/python2.7/site-packages/pip/utils/ init .py", línea 70, en ensure_dir os.makedirs (ruta) Archivo "/ home / ubuntu / Envs / ec2_deploy_test / lib / python2.7 / os.py ", línea 150, en makedirs makedirs (head, mode) Archivo" /home/ubuntu/Envs/ec2_deploy_test/lib/python2.7/os.py ", línea 150 , en makedirs makedirs (cabeza, modo) Archivo "/home/ubuntu/Envs/ec2_deploy_test/lib/python2.7/os.py", línea 150, en makedirs makedirs (cabeza, modo) Archivo "/ home / ubunt u / Envs / ec2_deploy_test / lib / python2.7 / os.py ", línea 157, en makedirs mkdir (nombre, modo) OSError: [Errno 13] Permiso denegado: ''/home/ubuntu/.cache/pip/wheels/ ab ''
Luego ejecuté (ec2_deploy_test)ubuntu@ip-172-31-22-100:~/ec2-deploy-test$ sudo pip install -r requirements.txt
y psycopg2 instalados con éxito.
¿Por qué necesitaría permisos de root para instalar un paquete de Python en mi entorno virtual? Soy nuevo en Linux y sysadmin en general, así que todos los consejos son bienvenidos. Gracias por adelantado.
Por algún motivo, no tiene acceso para crear un directorio dentro de /home/ubuntu/.cache/pip/wheels/ab
. Normalmente este problema no debería aparecer; de todos modos, dado que sucedió, simplemente cambie los derechos del directorio .cache
recursivamente. Supongo que el problema es una propiedad, así que intente sudo chown -R <USERNAME> ~/.cache/pip
el comando sudo chown -R <USERNAME> ~/.cache/pip
, donde se supone que el <USERNAME>
es el nombre de su usuario.
Un consejo: trate de no iniciar una aplicación desde la raíz sin una necesidad real en esto. Lo más probable es que el directorio al que no tiene acceso haya sido creado por alguna aplicación que se esté ejecutando con derechos de root, y ahora es una propiedad desordenada.
Supongo que usaste virtualenv -p /usr/bin/python3.4 env, tuve el mismo problema
Es python 3 y podría no tener nada que ver con los permisos o la raíz si intentó la recomendación de Angles y no funciona. Necesita instalar python3-dev ... O simplemente quedarse con python2. Espero que ayude
Aquí está el enlace: Problemas con psycopg2 en virtualenv python3 para usar con Django