Запуск Ubuntu в digitalocean: pip завершается с ошибкой «Отказано в доступе»

Запуск Ubuntu в digitalocean: pip завершается с ошибкой «Отказано в доступе»

Я пользователь Windows и новичок в Ubuntu и DigitalOcean. Я выполнил шаги в

https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-12-04

и я прохожу через

https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-django-with-postgres-nginx-and-gunicorn

но это не удается pip install django, с

OSError: [Errno 13] Permission denied: '/opt/myenv/build'

Выслеживать:

(myenv)jeffy@originaldjangster:~$ pip install django
Downloading/unpacking django
Cleaning up...
Exception:
Traceback (most recent call last):
  File "/opt/myenv/local/lib/python2.7/site-packages/pip/basecommand.py", line 1                         22, in main
    status = self.run(options, args)
  File "/opt/myenv/local/lib/python2.7/site-packages/pip/commands/install.py", l                         ine 278, in run
    requirement_set.prepare_files(finder, force_root_egg_info=self.bundle, bundl                         e=self.bundle)
  File "/opt/myenv/local/lib/python2.7/site-packages/pip/req.py", line 1153, in                          prepare_files
    location = req_to_install.build_location(self.build_dir, not self.is_downloa                         d)
  File "/opt/myenv/local/lib/python2.7/site-packages/pip/req.py", line 218, in b                         uild_location
    _make_build_dir(build_dir)
  File "/opt/myenv/local/lib/python2.7/site-packages/pip/req.py", line 1527, in                          _make_build_dir
    os.makedirs(build_dir)
  File "/opt/myenv/lib/python2.7/os.py", line 157, in makedirs
    mkdir(name, mode)
OSError: [Errno 13] Permission denied: '/opt/myenv/build'

Storing debug log for failure in /home/jeffy/.pip/pip.log

Журнал отладки:

jeffy@originaldjangster:~$ more /home/jeffy/.pip/pip.log
------------------------------------------------------------
/opt/myenv/bin/pip run on Tue Aug  5 14:45:38 2014
Downloading/unpacking django
Cleaning up...
Exception:
Traceback (most recent call last):
  File "/opt/myenv/local/lib/python2.7/site-packages/pip/basecommand.py", line 122, in main
    status = self.run(options, args)
  File "/opt/myenv/local/lib/python2.7/site-packages/pip/commands/install.py", line 278, in run
    requirement_set.prepare_files(finder, force_root_egg_info=self.bundle, bundle=self.bundle)
  File "/opt/myenv/local/lib/python2.7/site-packages/pip/req.py", line 1153, in prepare_files
    location = req_to_install.build_location(self.build_dir, not self.is_download)
  File "/opt/myenv/local/lib/python2.7/site-packages/pip/req.py", line 218, in build_location
    _make_build_dir(build_dir)
  File "/opt/myenv/local/lib/python2.7/site-packages/pip/req.py", line 1527, in _make_build_dir
    os.makedirs(build_dir)
  File "/opt/myenv/lib/python2.7/os.py", line 157, in makedirs
    mkdir(name, mode)
OSError: [Errno 13] Permission denied: '/opt/myenv/build'
jeffy@originaldjangster:~$

визуал:

#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults        env_reset
Defaults        mail_badpass
Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root    ALL=(ALL:ALL) ALL
jeffy   ALL=(ALL:ALL) ALL

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

# See sudoers(5) for more information on "#include" directives:

#includedir /etc/sudoers.d

Я пропустил шаг с проблемой и успешно продолжил работу до тех пор pip install gunicorn, пока не получил ту же ошибку:

OSError: [Errno 13] Permission denied: '/opt/myenv/build'

К вашему сведению: я делаю это в активированном virtualenv, как и было сказано.

Что я делаю не так? Спасибо за помощь.


Вышеизложенное — моя главная проблема. Если на следующее легко ответить дополнительно, пожалуйста, сделайте это. Это шаг, который мне нужно предпринять, как только я разберусь с вышеизложенным:

Мне также нужно знать, как обновиться с Python 2.7.6 до Python 3.4.1 (или самой последней доступной версии, совместимой с Ubuntu). Python уже был установлен — я его не устанавливал.

Я бы хотел иметь только 3.4.1. Я не хочу, чтобы 2.7 и 3.4 стояли рядом.

jeffy@originaldjangster:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 14.04.1 LTS
Release:        14.04
Codename:       trusty
jeffy@originaldjangster:~$ python --version 
Python 2.7.6

решение1

Поддержка Digital Ocean:

Поэтому независимо от того, разрешено ли вашему пользователю выполнять все команды в visudo, вам все равно потребуется добавлять «sudo» ко всем вашим командам.

Что касается Python, версию 2.7 просто так удалить нельзя. Если вы хотите использовать Python версии 3.xx, вам нужно будет использовать команду python3.


Мне:

Похоже, это было оно. Руководство "Как установить" https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-django-with-postgres-nginx-and-gunicorn не имеет префикса "sudo" перед командами "pip", а вроде бы должен быть. Похоже, что 3.4 уже установлен. Отлично.


ОБНОВЛЯТЬ

Оказывается, вышесказанное не достаточно хорошо. Хотя оно устанавливает ipython, оно не устанавливает егов виртуальном окружении--никакого ipythonкаталога не создано /opt/jenv/binвообще. При установке таким образом, в моей среде, по крайней мере, запуск IPython использует Python 2.7, а не 3.4. (это то, что он говорит при запуске).

Решение — активировать virtualenv и затем установить его с помощьюvirtualenv'sпип:

sudo /opt/jenv/bin/pip install ipython

(Напоминаем, что без sudo, это не работает — см. вопрос.) IPython теперь правильно установлен в каталоге bin и при запуске сообщает, что использует Python 3.4 (при условии, что virtualenv был создан с помощью -p /usr/bin/python3.4).

Кажетсяэти инструкциинеобходимо изменить.

Связанный контент