comando linux trovato ma non trovato quando si usa sudo


11

Sto cercando di eseguire un'installazione python3 in questo modo:

pip3 install django

Ottengo l'errore:

PermissionError: [Errno 13] Autorizzazione negata: '/usr/local/lib/python3.6/site-packages/pytz'

Quindi provo:

sudo pip3 install django

Ottengo l'errore:

sudo: pip3: comando non trovato

Ecco come appare il mio $ PATH:

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

Come posso ottenere l'accesso sudo a pip3?

Risposte:


9

Sudo non utilizza lo stesso PATHutente corrente per motivi di sicurezza. In /etc/sudoersc'è un'opzione secure_pathche specifica il percorso usato quando si eseguono comandi con sudo. Il mio assomiglia a questo:

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

Dalla manpage di 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.

Il pip3comando probabilmente non si trova nel percorso definito dal sudoersfile. Puoi aggiungere il percorso al secure_patho fornire il percorso completo al pip3comando in questo modo:

sudo /path/to/pip3 install django

1

È possibile che sudo non conservi la tua variabile $ PATH al momento dell'uso. Provare a utilizzare il percorso completo del file binario PIP3 nel comando, per esempio: sudo /path/to/pip3 install django. Se non sei sicuro del percorso completo, fallo which pip3.


quali uscite pip3: / usr / local / bin / pip3. Anche la variabile $ PATH ha un bell'aspetto: /usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/ec2-user/.local/bin:/home/ec2- user / bin
petey

fa sudo echo $PATHprodurre qualcosa di diverso? Hai provato il comando con il percorso completo di pip3? Qualche differenza nei risultati?
Safado,

sudo restituisce lo stesso: /usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/ec2-user/.local/bin:/home/ec2-user/bin
Petey,


0

Ho rilasciato l'installazione di Django in questo modo:

pip3 install --user django

Ciò ha risolto il problema.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.