Root shell widzi pip, ale sudo pip „nie znaleziono polecenia”

12

Mam zainstalowany Python 2.7.8 przez makea make install, a następnie pip poprzez get-pip . Muszę zauważyć, że pracuję za serwerem proxy, który utworzyłem

  • http_proxy
  • ftp_proxy
  • https_proxy

w

  • mój użytkownik ~/.zshrc
  • root /root/.basrc

teraz mogę biegać pip

  • na moim koncie użytkownika
  • na koncie root

ale nie jestem w stanie uruchomić go za pomocą powłoki użytkownika za pomocą sudo

sudo pip
sudo: pip: command not found

Co tu jest nie tak?

Patryk
źródło

Odpowiedzi:

18

Stanie się tak, ponieważ PATHdziała inaczejsudo . Spróbuj porównać:

which pip
env

vs.

sudo which pip
sudo env

Jednym bezpiecznym obejściem jest utworzenie dowiązania symbolicznego do pipw /usr/local/binlub nawet /usr/bin. Jeśli instalujesz pipprzy użyciu menedżera pakietów, zrobi to automatycznie na kilku (większości?) Dystrybucjach.

l0b0
źródło
6
dzięki, alias sudo='sudo env PATH=$PATH'rozwiązałem problem.
Patryk
Są z tym problemy bezpieczeństwa - nie chcesz tego ślepo ustawiać we wszystkich swoich środowiskach!
l0b0,
7
Nie jestem pewien, czy było to bardzo jasne w tej odpowiedzi, ale rozwiązanie jest rzeczywiścieln -s /usr/local/bin/<stuff> /usr/bin/<stuff>
JulienD