복붙노트

[PYTHON] 왜 내가 파이썬과 pip를 사용하여 sudo 없이는 할 수없는 일이 있습니까?

PYTHON

왜 내가 파이썬과 pip를 사용하여 sudo 없이는 할 수없는 일이 있습니까?

pip를 사용하면 보통 sudo가 없으면 작동하지 않습니다. 나는 종종 사람들이 sudo없이 pip를 사용하는 것을 본다, 그래서 나는 무엇을 잘못하고 있는가?

나는 sudo로 pip 패키지를 설치하는 것은 권장하지 않는다는 것을 읽었다. 나는 virtualenv를 사용하여 sudo없이 pip를 사용할 수 있음을 알고 있지만 virtualenv를 설치하려면 먼저 sudo를 사용해야합니다.

sudo없이 pip를 설치하려고하면 다음과 같은 결과가 나옵니다.

PermissionError: [Errno 13] Permission denied: '/usr/local/lib/python3.4/dist-packages/pip'

pip3 설치 플라스크로 플라스크를 설치하려고 할 때 :

PermissionError: [Errno 13] Permission denied: '/usr/local/lib/python3.4/dist-packages/werkzeug'

해결법

  1. ==============================

    1.sudo는 Unix / Linux 시스템에서 특정 디렉토리에 쓰기 기능과 같은 권한을 사용하여 다른 사용자로 작업을 수행하는 데 사용됩니다. 실행할 때와 같이 에뮬레이션 할 사용자를 지정하지 않은 경우

    sudo는 Unix / Linux 시스템에서 특정 디렉토리에 쓰기 기능과 같은 권한을 사용하여 다른 사용자로 작업을 수행하는 데 사용됩니다. 실행할 때와 같이 에뮬레이션 할 사용자를 지정하지 않은 경우

    sudo pip install flask
    

    많은 환경에서 root로 알려진 시스템 관리자로 명령을 실행하려고 시도하고 있습니다. 관리자 암호 (사용자 관리 권한을 부여한 경우 관리자 암호가 될 수 있음)를 묻는 메시지가 표시되면 지정된 명령이 해당 사용자로 실행됩니다. 즉, 기본적으로 모든 파일 및 디렉토리에 대한 읽기 / 쓰기 권한이 있습니다. 시스템에서 (몇 가지 예외가 있지만, 대부분은 모서리의 경우이며 여기서는별로 중요하지 않습니다.) 이것은 sudo를 사용할 때 특별히주의해야 할 필요가 있음을 의미합니다. 단 하나의 공간만큼 오류가 발생하면 정말 엉망이 될 수 있습니다 :

    sudo rm -rf /usr/local/lib/python3.4/dist-packages/numpy*
    

    sudo rm -rf /usr /local/lib/python3.4/dist-packages/numpy*
    

    / usr과 local /? 사이의 공백을 참조하십시오. 시스템의 중요한 파일과 프로그램의 상당 부분을 포함하는 전체 / usr 폴더를 삭제하기 시작했습니다. 당신은 백업을 가지고 있기를 바랍니다! 자, 이것은 당신이 sudo를 죽일 까봐 두려워 할 필요가 있다는 것을 의미하지는 않습니다 만, 당신은 그것에 대해 건강한 존중이 필요합니다.

    파이썬 설치는 시스템 수준의 경향이 있습니다 (예, 예외가 있음을 압니다). 즉, 제 3 자 모듈을 pip와 함께 설치할 때처럼 sudo를 사용하여 수정해야합니다. 너가 달리는 경우에

    ls -l /usr/local/lib/python3.4 
    

    당신은 라인을 따라 뭔가를 볼 수 있습니다.

    drwxrwsr-x 125 root 4096 Nov  3 00:40 dist-packages
    

    pip와 함께 설치하려고하는 디렉토리가 root에 의해 소유됨을 보여주기 때문에 sudo를 사용해야합니다.

    자, 여기에 몇 가지 방법이 있습니다. 만약 당신이 그것에 익숙하고 시스템의 글로벌 패키지를 수정하는 것에 신경 쓰지 않는다면, su와 함께 pip를 사용하십시오. (사실, sudo -H를 사용해야 할 수도 있습니다 ... 홈 디렉토리의 권한에 대한 시작). 모든 모듈은 /usr/local/lib/python3.4/dist-packages에 설치되며 시스템의 모든 사용자가 사용할 수 있습니다.

    두 번째 옵션은 pip의 --user 옵션을 사용하여 홈 디렉토리 (~)에 lib / python3.4 / site-packages 계층을 만들고 거기에 설치된 모든 모듈을 ~ / bin에있는 스크립트와 함께 저장합니다. $ PATH에 추가해야합니다.이 방법의 장점은 sudo를 사용할 필요가 없다는 것입니다. 따라서 다른 프로그램을 실행하기 위해 특정 버전이 필요한 시스템 종속 모듈을 실수로 덮어 쓰지는 않을 것입니다. 설치된 모듈은 오직 사용자 만 사용할 수 있으므로 예를 들어 웹 서버가 Flask를 자체적으로 실행하려고 시도하고 원본 파일을 읽을 수없는 경우 문제가 발생할 수 있습니다. 이 문제는 대부분의 사용자에게 권장되는 해결책입니다.

    세 번째 옵션은 virtualenv와 같은 가상 환경을 사용하는 것입니다. 이렇게하면 별도의 python 실행 파일과 사이트 패키지 계층 구조 (시스템의 dist-packages 저장소에 연결하거나 사용할지 여부에 대한 옵션이 있습니다)가있는 사용자 정의 Python 설치가 선택한 위치에 만들어집니다. virtualenv에 패키지를 직접 설치할 수 있으며, 약간의 다양한 의존성이있는 약간의 환경을 만들 수 있습니다. 예를 들어, 프로그램을 더욱 강력하게 테스트 할 수 있습니다. 가상 환경을 켜고 끌 수 있습니다. 예를 들어 터미널의 여러 탭에서 몇 가지 예를 들어 병렬로 테스트 할 수 있습니다. 환경을 활성화하고 사용하는 데 더 많은 작업이 필요하기 때문에 이것은 제 2 위의 제 추천입니다. 이름을 지정하는 것이 좋지 않으면 작업중인 작업에 대해 혼란 스러울 수 있습니다. 단점으로는 두 번째 옵션과 같은 시스템 전체 가용성의 부족과 가상 환경을 사용하기 전에 수동으로 활성화해야한다는 점입니다.

    따라서 옵션을 살펴보고 시스템과 특정 상황에 가장 적합한 옵션을 확인하십시오. 행운을 빕니다!

  2. ==============================

    2.그 이유는 일반 사용자가 시스템 디렉토리를 수정하는 데 필요한 권한을 가지고 있지 않기 때문입니다. 이 메시지 에서처럼 :

    그 이유는 일반 사용자가 시스템 디렉토리를 수정하는 데 필요한 권한을 가지고 있지 않기 때문입니다. 이 메시지 에서처럼 :

    PermissionError: [Errno 13] Permission denied: '/usr/local/lib/python3.4/dist-packages/pip'
    

    다음은 알아야 할 사항에 대한 간략한 요약입니다.

    시스템에 파이썬이 설치되어 있습니다. 시스템의 파이썬을 수정하려면 sudo를 사용하거나 루트 사용자 여야합니다.

    sudo를 사용하지 않고 홈 디렉토리에 파이썬 라이브러리를 설치할 수 있지만 시스템의 다른 사용자가 아닌 사용자 만이 그것을 사용할 수 있습니다. pip 설치시 - gongzhitaao와 같은 --user 패키지 이름을 사용하십시오.

    언급 한 Laughing Man과 같이 원하는 디렉토리에 Python을 설치할 수도 있습니다. 이것은 virtualenv라고 불리는데, 이것이 가장 선호되는 방법이라고 생각합니다.

  3. from https://stackoverflow.com/questions/33922240/why-i-cant-do-some-things-without-sudo-using-python-and-pip by cc-by-sa and MIT license