Команда linux знайдена, але не знайдена при використанні sudo


11

Я намагаюся запустити встановлення python3 так:

pip3 install django

Я отримую помилку:

PermissionError: [Errno 13] Дозвіл відхилено: '/usr/local/lib/python3.6/site-packages/pytz'

Потім я намагаюся:

sudo pip3 install django

Я отримую помилку:

sudo: pip3: команда не знайдена

Ось як виглядає мій $ PATH:

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

Як я можу отримати доступ до sudo до pip3?

Відповіді:


9

З PATHміркувань безпеки Sudo не використовує те саме , що ваш поточний користувач. В /etc/sudoersє опція , secure_pathяка вказує шлях , який використовується при виконанні команди з Sudo. Моя виглядає так:

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

З набору сторінки 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.

pip3Команда, ймовірно , не в шляху , певний sudoersфайл. Ви можете додати шлях до команди secure_pathабо надати повний шлях до pip3команди так:

sudo /path/to/pip3 install django

1

Можливо, що sudo не зберігає вашу змінну $ PATH при використанні. Спробуйте використовувати повний шлях до PIP3 довічним в команді, наприклад: sudo /path/to/pip3 install django. Якщо ви не впевнені в повному шляху, зробіть це which pip3.


який pip3 виводить: / usr / local / bin / pip3. Також добре виглядає змінна $ PATH: /usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/ec2-user/.local/bin:/home/ec2- користувач / bin
petey

чи sudo echo $PATHвиробляє щось інше? Ви спробували команду з повним шляхом до pip3? Будь-яка різниця в результатах?
Сафадо

sudo виводить те саме: /usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/ec2-user/.local/bin:/home/ec2-user/bin
petey


0

Я видав установку django таким чином:

pip3 install --user django

Це вирішило проблему.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.