Starten mit Ubuntu in Digitalocean: Pip schlägt mit „Zugriff verweigert“ fehl

Starten mit Ubuntu in Digitalocean: Pip schlägt mit „Zugriff verweigert“ fehl

Ich bin ein Windows-Benutzer und ein Ubuntu- und DigitalOcean-Neuling. Ich habe die Schritte in

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

und ich gehe durch

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

aber es scheitert an pip install django, mit

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

Zurück verfolgen:

(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

Austestungsprotokoll:

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:~$

visuell:

#
# 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

Ich habe den Problemschritt übersprungen und bin erfolgreich bis fortgefahren pip install gunicorn. An diesem Punkt erhielt ich den gleichen Fehler:

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

Zu Ihrer Information: Ich mache das wie angewiesen in einer aktivierten virtuellen Umgebung.

Was mache ich falsch? Danke für die Hilfe.


Das Obige ist mein Hauptproblem. Wenn das Folgende zusätzlich leicht zu beantworten ist, tun Sie es bitte. Das ist der Schritt, den ich unternehmen muss, sobald ich das Obige herausgefunden habe:

Ich muss auch wissen, wie ich von Python 2.7.6 auf Python 3.4.1 (oder die höchste verfügbare Ubuntu-kompatible Version) aktualisiere. Python war bereits installiert – ich habe es nicht installiert.

Ich möchte nur 3.4.1 haben. Ich möchte nicht 2.7 und 3.4 nebeneinander.

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

Antwort1

Digital Ocean-Unterstützung:

Unabhängig davon, ob Ihr Benutzer so eingestellt ist, dass er alle Befehle in Visudo ausführen kann, müssen Sie dennoch allen Ihren Befehlen „sudo“ hinzufügen.

Was Python betrifft, kann Version 2.7 nicht einfach entfernt werden. Wenn Sie Python Version 3.xx verwenden möchten, müssen Sie den Befehl python3 verwenden.


Mich:

Das scheint es gewesen zu sein. Die Anleitung „So installieren Sie“ https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-django-with-postgres-nginx-and-gunicorn hat nicht das Präfix „sudo“ vor den „pip“-Befehlen, obwohl es so aussehen sollte. Es sieht so aus, als wäre 3.4 auch schon installiert. Ausgezeichnet.


AKTUALISIEREN

Es stellt sich heraus, dass das oben genannte nicht gut genug ist. Obwohl es ipython installiert, installiert es es nichtin der virtuellen Umgebung--es wird überhaupt kein ipythonVerzeichnis erstellt /opt/jenv/bin. Wenn es auf diese Weise installiert wird, verwendet IPython in meiner Umgebung beim Starten jedenfalls Python 2.7 und nicht 3.4. (das wird beim Start angezeigt).

Die Lösung besteht darin, die virtuelle Umgebung zu aktivieren und dann mit demvirtuelle UmgebungenPip:

sudo /opt/jenv/bin/pip install ipython

(Zur Erinnerung: Ohne sudofunktioniert dies nicht – siehe Frage.) IPython ist jetzt korrekt im Bin-Verzeichnis installiert und zeigt beim Start an, dass es Python 3.4 verwendet (sofern die virtuelle Umgebung mit erstellt wurde -p /usr/bin/python3.4).

Es scheintdiese Anweisungenmüssen geändert werden.

verwandte Informationen