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) 옵션을 사용하는 것이 좋습니다.
답변
sudo
with 사용에 대한 조언을 중단해야합니다 pip install
. 먼저 시도하는 것이 좋습니다 pip install --user
. 이것이 실패하면 여기 에서 상단 게시물을 살펴보십시오 .
사용하지 말아야하는 이유 sudo
는 다음과 같습니다.
pip를 사용하여 pip를 실행 sudo
하면 루트 사용자로 인터넷에서 임의의 Python 코드를 실행하게되는데, 이는 상당히 큰 보안 위험입니다. 누군가가 PyPI에 악성 프로젝트를 올려 설치하면 공격자에게 컴퓨터에 대한 루트 액세스 권한을 부여합니다.
답변
권한없이 시스템 전체 경로에 패키지를 설치하려고합니다.
-
일반적으로 시스템 전체 경로에 패키지를 설치하기 위해sudo
임시로 수퍼 유저
권한 을 얻을 수 있습니다 .sudo pip install -r requirements.txt
실제로 이것은 나쁜 생각이며 좋은 사용 사례가 없습니다. @wim의 의견을 참조하십시오.
-
시스템 전체를 변경하지 않으려면 플래그를 사용하여 사용자 별 경로 에 패키지를 설치할 수 있습니다
--user
.필요한 것은 다음과 같습니다.
pip install --user runloop requirements.txt
-
마지막으로 더 세밀한 제어를 위해 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-virtualenv
와 virtualenvwrapper
함께 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을 사용하고 싶지는 않을 것입니다. 그러나 다른 사람이 해당 해결 방법을 수행하고 해당 파일을 제거하는 것을 잊은 경우에 대비해이 방법이 나에게 도움이되었습니다!