Komenda linux została znaleziona, ale nie znaleziono podczas używania sudo


11

Próbuję uruchomić instalację python3 w następujący sposób:

pip3 install django

Dostaję błąd:

PermissionError: [Errno 13] Odmowa dostępu: „/usr/local/lib/python3.6/site-packages/pytz”

Następnie próbuję:

sudo pip3 install django

Dostaję błąd:

sudo: pip3: nie znaleziono polecenia

Oto jak wygląda moja $ PATH:

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

Jak mogę uzyskać dostęp sudo do pip3?

Odpowiedzi:


9

Sudo PATHze względów bezpieczeństwa nie używa tego samego, co obecny użytkownik. W /etc/sudoersistnieje opcja secure_path, która określa ścieżkę używaną podczas uruchamiania poleceń z sudo. Mój wygląda następująco:

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

Ze strony sudo:

 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.

pip3Polecenie nie jest prawdopodobnie w ścieżce określonej przez sudoerspliku. Możesz dodać ścieżkę do polecenia secure_pathlub podać pełną ścieżkę do pip3polecenia w następujący sposób:

sudo /path/to/pip3 install django

1

Możliwe, że sudo nie zachowuje zmiennej $ PATH po użyciu. Spróbuj użyć pełnej ścieżki do pliku binarnego pip3 w poleceniu, np sudo /path/to/pip3 install django. Jeśli nie masz pewności co do pełnej ścieżki, zrób to which pip3.


które wyjścia pip3: / usr / local / bin / pip3. Zmienna $ PATH również wygląda dobrze: /usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/ec2-user/.local/bin:/home/ec2- użytkownik / bin
petey

robi sudo echo $PATHprodukować coś innego? Czy wypróbowałeś polecenie z pełną ścieżką do pip3? Jakaś różnica w wynikach?
Safado

sudo wyświetla to samo: /usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/ec2-user/.local/bin:/home/ec2-user/bin
petey


0

Wydałem instalację django w ten sposób:

pip3 install --user django

To rozwiązało problem.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.