Команда 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что и ваш текущий пользователь из соображений безопасности. В /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? Есть ли разница в результатах?
Safado

Выводы 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.