Linux-Befehl gefunden, aber bei Verwendung von sudo nicht gefunden

11

Ich versuche, eine Python3-Installation wie folgt auszuführen:

pip3 install django

Ich bekomme den Fehler:

PermissionError: [Errno 13] Berechtigung verweigert: '/usr/local/lib/python3.6/site-packages/pytz'

Ich versuche dann:

sudo pip3 install django

Ich bekomme den Fehler:

sudo: pip3: Befehl nicht gefunden

So sieht mein $ PATH aus:

/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/ec2-user/.local/bin:/home/ec2-user/bin

Wie kann ich sudo auf pip3 zugreifen?

Petey
quelle

Antworten:

9

Sudo verwendet PATHaus Sicherheitsgründen nicht dasselbe wie Ihr aktueller Benutzer. In /etc/sudoersgibt es eine Option, secure_pathdie den Pfad angibt, der beim Ausführen von Befehlen mit sudo verwendet wird. Meins sieht so aus:

Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"

Aus der Sudo-Manpage:

 secure_path   Path used for every command run from sudo.  If you don't trust the people running sudo to have a sane PATH environment
               variable you may want to use this.  Another use is if you want to have the “root path” be separate from the “user path”.
               Users in the group specified by the exempt_group option are not affected by secure_path.  This option is not set by
               default.

Der pip3Befehl befindet sich wahrscheinlich nicht in dem von der sudoersDatei definierten Pfad . Sie können entweder den Pfad zum Befehl hinzufügen secure_pathoder den vollständigen Pfad zum pip3Befehl wie folgt angeben:

sudo /path/to/pip3 install django
EvilTorbalan
quelle
1

Es ist möglich, dass sudo Ihre $ PATH-Variable bei Verwendung nicht beibehält. Versuchen Sie, den vollständigen Pfad zur pip3-Binärdatei im Befehl zu verwenden, zum Beispiel : sudo /path/to/pip3 install django. Wenn Sie sich über den vollständigen Pfad nicht sicher sind, tun Sie dies which pip3.

Safado
quelle
welche pip3 ausgibt: / usr / local / bin / pip3. Die Variable $ PATH sieht ebenfalls gut aus: /usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/ec2-user/.local/bin:/home/ec2- Benutzer / bin
Petey
tut sudo echo $PATHproduzieren etwas anderes? Haben Sie den Befehl mit dem vollständigen Pfad zu pip3 ausprobiert? Unterschiede in den Ergebnissen?
Safado
sudo gibt dasselbe aus: /usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/ec2-user/.local/bin:/home/ec2-user/bin
Petey
0

Ich habe die Django-Installation folgendermaßen ausgegeben:

pip3 install --user django

Dies hat das Problem behoben.

Petey
quelle