Команда 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
EvilTorbalan
источник
1

Возможно, что sudo не сохраняет переменную $ PATH при использовании. Попробуйте использовать полный путь к PIP3 двоичном в команде, например: sudo /path/to/pip3 install django. Если вы не уверены в полном пути, сделайте which pip3.

Safado
источник
какой вывод 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

Вы всегда можете сделать:

sudo env "PATH=$PATH" pip3 install django

Как уже упоминалось в этом ответе .

Александр Толкачев
источник
0

Я выпустил django так:

pip3 install --user django

Это решило проблему.

Пити
источник