linux command found but not found when using sudo
Sudo is not using the same PATH
as your current user for security reasons. In /etc/sudoers
there is an option secure_path
which specifies the path used when running commands with sudo.
Mine looks like this:
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"
From the sudo manpage:
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.
The pip3
command is probably not in the path defined by the sudoers
file. You can either add the path to the secure_path
or provide the full path to the pip3
command like this:
sudo /path/to/pip3 install django
It's possible that sudo is not preserving your $PATH variable upon use. Try using the full path to the pip3 binary in the command, for example: sudo /path/to/pip3 install django
. If you're unsure of the full path, do which pip3
.