PermissionError: [Errno 13] Permission denied: '/usr/lib/python3.9/site-packages/...'
먼저 어떤 명령에서 나는지 구분한다. pip list 나 pip show 는 읽기만 하므로 원래 권한 오류가 나지 않는다. 그 명령에서 오류가 난다면 패키지 디렉터리나 그 상위 경로의 권한이 잘못 바뀐 것이다. chmod 를 재귀로 돌린 직후라면 그것이 원인이다.
ls -ld $(python3 -c 'import site; print(site.getsitepackages()[0])')
ls -ld $(python3 -m site --user-site)
namei -l $(python3 -m site --user-site) # 상위 경로까지 한 번에
디렉터리는 755, 파일은 644 가 정상이다. 실행 파일(bin/ 아래)만 755 다. 재귀 chmod 755 는 일반 파일까지 실행 가능하게 만들지만 읽기 자체는 막지 않으므로, 여전히 안 되면 소유자와 상위 디렉터리를 본다.
설치에서 나는 권한 오류는 대응이 다르다. sudo pip install 은 쓰지 않는다. 배포판 패키지 관리자가 관리하는 파일을 덮어 시스템 도구가 깨질 수 있다.
python3 -m venv ~/.venvs/app # 가장 권장
. ~/.venvs/app/bin/activate
pip install requests
pip install --user requests # venv 를 못 쓸 때
어느 파이썬의 pip 인지도 확인한다. pip 와 python3 이 서로 다른 설치본을 가리키는 경우가 흔하다.
which -a pip pip3 python3
python3 -m pip --version
python3 -m pip 형태로 부르면 이 어긋남이 생기지 않는다.