sudo
wird in Unix/Linux-Systemen verwendet, um Aufgaben als ein anderer Benutzer auszuführen, mit ihre Berechtigungen, wie die Fähigkeit, in bestimmte Verzeichnisse zu schreiben. Wenn Sie nicht angeben, um den Benutzer zu emulieren, wie wenn
sudo pip install flask
laufen Sie versuchen, den Befehl als Systemadministrator ausgeführt werden, wie root
in vielen Umgebungen bekannt. Sie werden nach dem Administratorkennwort gefragt (das kann Ihr eigenes sein, wenn Sie Ihrem Benutzer Administratorrechte erteilt haben), dann führt der angegebene Befehl als Benutzer aus, was bedeutet, dass er im Wesentlichen auf jede Datei Lese-/Schreibzugriff hat und Verzeichnis auf dem System (es gibt einige Ausnahmen, aber sie sind meistens Eckfälle und nicht sehr wichtig hier). Das bedeutet, dass Sie besonders vorsichtig wenn sudo
Verwendung als Fehler so klein wie ein einzelner Raum sein müssen, kann wirklich durcheinander zu bringen:
sudo rm -rf /usr/local/lib/python3.4/dist-packages/numpy*
mit
sudo rm -rf /usr /local/lib/python3.4/dist-packages/numpy*
sehen, dass der Raum zwischen vergleichen /usr
und ? Sie haben gerade damit begonnen, den gesamten Ordner /usr
zu löschen, der einen großen Teil der wichtigen Dateien und Programme auf dem System enthält. Hoffe, du hast ein Backup! Nun, das bedeutet nicht, dass Sie Angst vor dem Tod von sudo
haben müssen, aber Sie tun müssen einen gesunden Respekt dafür haben.
Python-Installationen sind in der Regel auf Systemebene sein (ja, ich weiß, es gibt Ausnahmen), was bedeutet, dass Sie sudo
verwenden müssen, um sie zu ändern, etwa wenn sie mit pip
3rd-Party-Module installieren. Wenn Sie
ls -l /usr/local/lib/python3.4
laufen werden Sie etwas entlang der Linien von
drwxrwsr-x 125 root 4096 Nov 3 00:40 dist-packages
zeigt, dass das Verzeichnis Sie versuchen zu installieren, um mit pip
von root
gehört, so dass die Verwendung von sudo
ist notwendig.
Jetzt gibt es eine Reihe von Möglichkeiten. Wenn Sie damit vertraut sind und die globalen Pakete des Systems nicht ändern möchten, gehen Sie voran und verwenden Sie sudo
mit pip
(in der Tat müssen Sie möglicherweise sudo -H ...
verwenden, wenn Sie am Anfang eine kleine Nachricht in gelb über Berechtigungen in erhalten Ihr Heimatverzeichnis). Alle Module werden unter /usr/local/lib/python3.4/dist-packages
installiert und stehen allen Benutzern auf dem System zur Verfügung.
Die zweite Option ist --user
Option Pip zu verwenden, die eine lib/python3.4/site-packages
Hierarchie in Ihrem Home-Verzeichnis wird (~
) und speichern Sie alle dort installierten Module, zusammen mit Skripten in ~/bin
(die Sie Ihren $PATH
hinzufügen sollten. Der Vorteil von dieser Methode ist, dass Sie nichtsudo
verwenden müssen, damit Sie nicht versehentlich systemabhängige Module überschreiben, in denen bestimmte Versionen für andere Programme erforderlich sind, der Nachteil ist, dass die installierten Module nur für Sie verfügbar sind , so dass Sie können Probleme auftreten, wenn zum Beispiel Ihr Webserver versucht, Flask als selbst auszuführen, und kann nicht die Quelldateien lesen has ist nichts, was ein wenig config file-editing nicht beheben kann. Dies ist meine empfohlene Lösung für die meisten Benutzer. Die dritte Option besteht in der Verwendung von virtuellen Umgebungen wie virtualenv
. Dadurch wird eine benutzerdefinierte Python-Installation an dem von Ihnen gewählten Speicherort mit einer separatenpython
ausführbaren Hierarchie und site-packages
Hierarchie erstellt (es gibt Optionen, ob Sie mit dem Repository des Systems dist-packages
verknüpfen oder dieses verwenden möchten). Sie können pip install
Pakete direkt in die virtualenv, und machen Sie so viele Umgebungen wie Ihr kleines Herz begehrt, jeder mit leicht unterschiedlichen Versionen der verschiedenen Abhängigkeiten, zum Beispiel, so dass Sie Ihre Programme robuster testen können. Sie können die virtuellen Umgebungen ein- und ausschalten, sodass Sie zum Beispiel mehrere in verschiedenen Registerkarten von Terminal ausführen können, um beispielsweise Dinge parallel zu testen. Dies ist eine naheliegende Empfehlung an zweiter Stelle, da die Aktivierung und Nutzung der Umgebungen (etwas) mehr Arbeit erfordert, und Sie können sich darüber irritieren, in welcher Sie arbeiten, wenn Sie nicht sehr gut darin sind, sie zu benennen. Nachteile sind die fehlende systemweite Verfügbarkeit, wie die zweite Option, und die Tatsache, dass die virtuelle Umgebung vor der Verwendung manuell aktiviert werden muss.
Werfen Sie einen Blick auf die Optionen und sehen Sie, welche für Ihr System und Ihre Situation am besten geeignet ist. Viel Glück!
Ich vermute, du bist auf Linux/Unix/Variante der gleichen. Dies ist nicht die Art, es dort zu tun. Ich schlage vor, Sie lesen auf ['virtualenv'] (http://docs.python-guide.org/en/latest/dev/virtualenvs/). Es besteht eine große Chance, dass Sie Ihre Systeminstallation von Python durcheinander bringen. – Manhattan
Grundsätzlich 'pip install --user package-name', der Ihr Paket in' $ HOME/.local/lib/pythonx.y/site-packages/'setzt. Siehe http: // stackoverflow.com/questions/7143077/how-can-i-install-packages-in-mein-haus-ordner-mit-pip – gongzhitaao