[python] pip 설치 실패 : OSError : [Errno 13] 디렉터리에 대한 권한이 거부되었습니다.

pip install -r requirements.txt아래 예외로 실패합니다 OSError: [Errno 13] Permission denied: '/usr/local/lib/.... 무엇이 잘못되었으며 어떻게 수정합니까? ( 장고 를 설정하려고합니다 )

Installing collected packages: amqp, anyjson, arrow, beautifulsoup4, billiard, boto, braintree, celery, cffi, cryptography, Django, django-bower, django-braces, django-celery, django-crispy-forms, django-debug-toolbar, django-disqus, django-embed-video, django-filter, django-merchant, django-pagination, django-payments, django-storages, django-vote, django-wysiwyg-redactor, easy-thumbnails, enum34, gnureadline, idna, ipaddress, ipython, kombu, mock, names, ndg-httpsclient, Pillow, pyasn1, pycparser, pycrypto, PyJWT, pyOpenSSL, python-dateutil, pytz, requests, six, sqlparse, stripe, suds-jurko
Cleaning up...
Exception:
Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/pip/basecommand.py", line 122, in main
    status = self.run(options, args)
  File "/usr/lib/python2.7/dist-packages/pip/commands/install.py", line 283, in run
    requirement_set.install(install_options, global_options, root=options.root_path)
  File "/usr/lib/python2.7/dist-packages/pip/req.py", line 1436, in install
    requirement.install(install_options, global_options, *args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/pip/req.py", line 672, in install
    self.move_wheel_files(self.source_dir, root=root)
  File "/usr/lib/python2.7/dist-packages/pip/req.py", line 902, in move_wheel_files
    pycompile=self.pycompile,
  File "/usr/lib/python2.7/dist-packages/pip/wheel.py", line 206, in move_wheel_files
    clobber(source, lib_dir, True)
  File "/usr/lib/python2.7/dist-packages/pip/wheel.py", line 193, in clobber
    os.makedirs(destsubdir)
  File "/usr/lib/python2.7/os.py", line 157, in makedirs
    mkdir(name, mode)
OSError: [Errno 13] Permission denied: '/usr/local/lib/python2.7/dist-packages/amqp-1.4.6.dist-info'



답변

옵션 a) virtualenv를 만들고 활성화 한 다음 설치합니다.

virtualenv .venv
source .venv/bin/activate
pip install -r requirements.txt

옵션 b) homedir에 설치 :

pip install --user -r requirements.txt

이 프로젝트의 요구 사항이 다른 프로젝트 요구 사항을 방해하지 않도록 안전 (a) 옵션을 사용하는 것이 좋습니다.


답변

sudowith 사용에 대한 조언을 중단해야합니다 pip install. 먼저 시도하는 것이 좋습니다 pip install --user. 이것이 실패하면 여기 에서 상단 게시물을 살펴보십시오 .

사용하지 말아야하는 이유 sudo는 다음과 같습니다.

pip를 사용하여 pip를 실행 sudo하면 루트 사용자로 인터넷에서 임의의 Python 코드를 실행하게되는데, 이는 상당히 큰 보안 위험입니다. 누군가가 PyPI에 악성 프로젝트를 올려 설치하면 공격자에게 컴퓨터에 대한 루트 액세스 권한을 부여합니다.


답변

권한없이 시스템 전체 경로에 패키지를 설치하려고합니다.

  1. 일반적으로 시스템 전체 경로에 패키지를 설치하기 위해 sudo임시로 수퍼 유저
    권한 얻을 수 있습니다 .

     sudo pip install -r requirements.txt

    sudo 여기 에 대해 자세히 알아 보십시오 .

    실제로 이것은 나쁜 생각이며 좋은 사용 사례가 없습니다. @wim의 의견을 참조하십시오.

  2. 시스템 전체를 변경하지 않으려면 플래그를 사용하여 사용자 별 경로 에 패키지를 설치할 수 있습니다 --user.

    필요한 것은 다음과 같습니다.

     pip install --user runloop requirements.txt
  3. 마지막으로 더 세밀한 제어를 위해 virtualenv 를 사용할 수도 있습니다. 이는 특히 여러 프로젝트에서 작업하고 각 프로젝트 의 종속성을 추적하려는 경우 개발 환경을위한 우수한 솔루션이 될 수 있습니다 .

    가상 환경을 활성화 한 후

    $ my-virtualenv/bin/activate

    다음 명령은 (그리고 VIRTUALENV 내부 패키지를 설치할 수 없습니다 시스템 전체 경로) :

    pip install -r requirements.txt


답변

권한 거부 오류에 대한 Linux (ubuntu 기반)에서 많은 고통을 겪은 후 내게 효과가 있었던 것이 무엇인지 명확히하고 위의 Bert의 답변을 활용하여 이제 …

$ pip install --user <package-name>

또는 요구 사항 파일에서 pip를 실행하는 경우 …

$ pip install --user -r requirements.txt

가상 환경 생성을 포함하여 모든 pip 설치에서 안정적으로 작동합니다.

그러나, 깨끗한 솔루션 내 더 경험이 설치되었습니다 python-virtualenvvirtualenvwrapper함께 sudo apt-get install시스템 레벨에서.

그런 다음 가상 환경 내 pip install에서 --user플래그 없이 AND 없이 sudo. 전반적으로 훨씬 더 깨끗하고 안전하며 쉽습니다.


답변

사용자에게 일부 Python 설치 경로에 대한 쓰기 권한이 없습니다. 다음과 같은 방법으로 권한을 부여 할 수 있습니다.

sudo chown -R $USER /absolute/path/to/directory

따라서 권한을 부여한 다음 다시 설치해야합니다. 새 경로가 있으면 권한도 부여해야합니다.

sudo chown -R $USER /usr/local/lib/python2.7/


답변

권한이 필요한 경우 ‘sudo’와 함께 ‘pip’를 사용할 수 없습니다. 속임수를 써서 ‘sudo’를 사용하고 패키지를 설치할 수 있습니다. pip 명령 앞에 ‘sudo python -m …’을 넣으십시오.

sudo python -m pip install --user -r package_name


답변

그래서 완전히 다른 이유로 동일한 오류가 발생했습니다. 완전히 별개이지만 알려진 Homebrew + pip 버그 로 인해 Google Cloud의 도움말 문서에 나열된 이 해결 방법 을 따랐습니다 . 여기서 홈 디렉토리에 .pydistutils.cfg 파일을 생성했습니다. 이 파일에는 특정 라이브러리 설치에만 사용해야하는 특수 구성이 있습니다. 패키지를 설치 한 후 disutils.cfg 파일을 제거해야했지만 제거하는 것을 잊었습니다. 그래서 저를위한 해결책은 사실 단지 …

rm ~/.pydistutils.cfg.

그리고 모든 것이 정상적으로 작동했습니다. 물론 실제 이유로 해당 파일에 일부 구성이있는 경우 해당 파일을 곧바로 RM을 사용하고 싶지는 않을 것입니다. 그러나 다른 사람이 해당 해결 방법을 수행하고 해당 파일을 제거하는 것을 잊은 경우에 대비해이 방법이 나에게 도움이되었습니다!