[python] virtualenv와 함께 pip를 사용할 때 “Permission denied”를 방지하는 방법

pipUbuntu 머신의 가상 환경에서 Python 패키지를 배포하려고 하는데 권한 관련 문제가 발생합니다. 예를 들면 :

(TestVirtualEnv)test@testServer:~$ pip install markdown2

종료 :

오류 : ‘/home/test/virtualenvs/TestVirtualEnv/lib/python3.3/site-packages/markdown2.py’를 만들 수 없습니다 : 권한이 거부되었습니다.

sudo가상 환경이 아닌 전역 적으로 패키지를 설치하므로 할 수 없습니다 . 나는 chown에드 site-packages; ls프로그램은 관련 디렉토리 easy_install, pip그리고 setuptools, 아무것도 마크 다운 관련이 없습니다.

pip권한 관련 오류없이 가상 환경에서 패키지를 배포하는 방법은 무엇입니까?



답변

virtualenv권한 문제는 당신이를 만들 때 발생할 수 있습니다 virtualenv으로 sudo다음없이 작동 sudo에서 virtualenv.

귀하의 질문의 의견에 발견으로, 여기에 솔루션입니다 만들virtualenv 없이 sudo할 수있는 작업 (특히. 쓰기) 그것에없이 sudo.


답변

해결책:

virtualenv를 루트로 만든 경우 다음 명령을 실행합니다.

sudo chown -R your_username:your_username path/to/virtuaelenv/

이것은 아마도 문제를 해결할 것입니다.

건배


답변

제 경우에는을 사용 mkvirtualenv했지만 python3을 사용할 것이라고 말하지 않았습니다. 이 오류가 발생했습니다.

mkvirtualenv hug
pip3 install hug -U

....
error: could not create '/usr/lib/python3.4/site-packages': Permission denied

python3을 지정한 후에 작동했습니다.

mkvirtualenv --python=/usr/bin/python3 hug
pip3 install hug -U


답변

sudo를 사용하여 virtualenv를 만들지 않았습니다. 그래서 Sebastian의 대답은 나에게 적용되지 않았습니다. 내 프로젝트가 호출됩니다 utils. 나는 utils디렉토리를 확인 하고 이것을 보았다.

-rw-r--r--   1 macuser  staff   983  6 Jan 15:17 README.md
drwxr-xr-x   6 root     staff   204  6 Jan 14:36 utils.egg-info
-rw-r--r--   1 macuser  staff    31  6 Jan 15:09 requirements.txt

보시다시피, utils.egg-inforootnot macuser. 그것이 나에게 permission denied오류를 준 이유 입니다. 나는 또한 /Users/macuser/.virtualenvs/armoury/lib/python2.7/site-packages/utils.egg-link그것이 만든대로 제거 해야했습니다 root. 나는 pip install -e .그것들을 제거한 후 다시 한 번 작동했습니다.


답변

루트를 사용하여 가상 환경을 만든 경우 다음 명령을 사용하십시오.

sudo su

루트 액세스 권한을 부여한 다음이를 사용하여 가상 환경을 활성화합니다.

source /root/.env/ENV_NAME/bin/activate


답변

당신은 가상 환경 활성화되지 않았다 주사위를 사용하기 전에합니다.

다음과 같이 시도하십시오.

$(your venv path) . bin/activate

그런 다음 기본 폴더에서 pip -r requirements.txt를 사용하십시오.


답변

나는 또한 기존 가상 환경에서 새로운 Venv를 만든 후에 (우연히) 이런 일이 발생했습니다. 이것을 진단하는 쉬운 방법 python은 심볼릭 링크 된 위치를 확인하는 것 입니다.

ls -l venv/bin/python

적절한 Python 바이너리를 가리키는 지 확인하십시오. 대부분의 시스템에서 이것은 /usr/bin/python또는 /usr/bin/python3입니다. 기존 가상 환경을 가리키는 경우 /home/youruser/somedir/bin/python. 후자 인 경우 기존 virtualenv (예 : run deactivate)가 “내부”가 아닌지 확인하면서 venv를 다시 만드는 것이 좋습니다.