sudo를 사용할 때 Linux 명령을 찾았지만 찾을 수 없음


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

pip3에 sudo 액세스를 어떻게 얻을 수 있습니까?

답변:


9

Sudo는 PATH보안상의 이유로 현재 사용자 와 동일하지 않습니다 . 에 /etc/sudoers옵션이 있습니다 secure_pathsudo를 명령을 실행 할 때 사용되는 경로를 지정합니다. 광산은 다음과 같습니다.

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

1

사용시 sudo가 $ PATH 변수를 보존하지 않을 수 있습니다. 명령에서 pip3 바이너리의 전체 경로를 사용하십시오 (예 :) sudo /path/to/pip3 install django. 전체 경로를 모르는 경우을 수행하십시오 which pip3.


어떤 pip3 출력 : / usr / local / bin / pip3. $ PATH 변수도 잘 보입니다 : /usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/ec2-user/.local/bin:/home/ec2- 사용자 / 빈
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

이 방법으로 장고 설치를 발행했습니다.

pip3 install --user django

문제가 해결되었습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.