2015-05-29 4 views
6

Моя цель - показать приветственное приложение Django в мире, которое использует postgres для экземпляра EC2 под управлением Ubuntu. Я вошел в SSH и через клонировать Git репозиторий, содержащий проект Django с этим requirements.txt:Почему у меня нет разрешения на установку psycopg2 в virtualenv

Django==1.8.2 
djangorestframework==3.1.2 
psycopg2==2.6 

Я создал virtualenv, а затем, когда я побежал (ec2_deploy_test)[email protected]2-31-22-100:~/ec2-deploy-test$ pip install -r requirements.txt, это было брошено исключение:

Collecting psycopg2==2.6 (from -r requirements.txt (line 3)) /home/ubuntu/Envs/ec2_deploy_test/local/lib/python2.7/site-packages/pip/vendor/requests/packages/urllib3/util/ssl.py:90: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning . InsecurePlatformWarning Downloading psycopg2-2.6.tar.gz (367kB) 100% |████████████████████████████████| 368kB 785kB/s Building wheels for collected packages: psycopg2 Exception: Traceback (most recent call last): File "/home/ubuntu/Envs/ec2_deploy_test/local/lib/python2.7/site-packages/pip/basecommand.py", line 223, in main status = self.run(options, args) File "/home/ubuntu/Envs/ec2_deploy_test/local/lib/python2.7/site-packages/pip/commands/install.py", line 291, in run wb.build(autobuilding=True) File "/home/ubuntu/Envs/ec2_deploy_test/local/lib/python2.7/site-packages/pip/wheel.py", line 753, in build ensure_dir(output_dir) File "/home/ubuntu/Envs/ec2_deploy_test/local/lib/python2.7/site-packages/pip/utils/init.py", line 70, in ensure_dir os.makedirs(path) File "/home/ubuntu/Envs/ec2_deploy_test/lib/python2.7/os.py", line 150, in makedirs makedirs(head, mode) File "/home/ubuntu/Envs/ec2_deploy_test/lib/python2.7/os.py", line 150, in makedirs makedirs(head, mode) File "/home/ubuntu/Envs/ec2_deploy_test/lib/python2.7/os.py", line 150, in makedirs makedirs(head, mode) File "/home/ubuntu/Envs/ec2_deploy_test/lib/python2.7/os.py", line 157, in makedirs mkdir(name, mode) OSError: [Errno 13] Permission denied: '/home/ubuntu/.cache/pip/wheels/ab'

Затем я побежал (ec2_deploy_test)[email protected]:~/ec2-deploy-test$ sudo pip install -r requirements.txt и psycopg2 успешно установлен.

Зачем мне нужны права root для установки пакета python в моей виртуальной среде? Я новичок в Linux и sysadmin в целом, поэтому все советы приветствуются. Заранее спасибо.

+0

идентификатор вы Sudo, это не на самом деле установка его в virtualenv. Кроме того, если вы создадите свой виртуальный файл как root, тогда у пользователей не будет прав на установку всех пакетов. – Abhishek

ответ

6

По какой-то причине у вас нет доступа для создания каталога внутри /home/ubuntu/.cache/pip/wheels/ab. Обычно эта проблема не должна появляться; так или иначе, так как это произошло, просто измените права каталога .cache рекурсивно. Я предполагаю, что проблема в владении, поэтому попробуйте запустить команду sudo chown -R <USERNAME> ~/.cache/pip, где <USERNAME> должен быть именем вашего пользователя.

Совет - попробуйте не запускать приложения с root без реальной необходимости в этом. Скорее всего, каталог, к которому у вас нет доступа, был создан некоторым приложением, запущенным с правами root, и теперь собственность конфисковалась.

+0

Это сработало. Спасибо. –

1

Я предполагаю, что вы использовали virtualenv -p /usr/bin/python3.4 окр, У меня была такая же проблема

Его питон 3 и может не иметь ничего общего с правами или корень, если вы пытались Уголки рекомендации и это не работает. Вам нужно установить python3-dev ... Или просто придерживаться python2. надеюсь, что помогает

Heres ссылку: Trouble with psycopg2 in virtualenv python3 for use with Django

+0

Я не думаю, что у вас действительно была такая же проблема. Связанный с вами вопрос имеет ошибку, отличную от той, что здесь. Там он не смог найти модуль, но здесь ошибка «Permission denied». –