Назад | Перейти на главную страницу

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

Я пытаюсь запустить установку python3 следующим образом:

pip3 install django

Я получаю сообщение об ошибке:

PermissionError: [Errno 13] Permission denied: '/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?

Судо не использует то же самое 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

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

Я выполнил установку django следующим образом:

pip3 install --user django

Это устранило проблему.

Всегда можно:

sudo env "PATH=$PATH" pip3 install django

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