Python / 윈도우에서 pip로 설치할 때 '액세스가 거부되었습니다.' 해결하는 방법
Windows에서 pip 설치 중 [WinError 5] 액세스가 거부되었습니다가 나오면, 오류에 표시된 파일 경로와 설치에 사용한 Python부터 확인합니다. 전역 site-packages에 쓰기 권한이 없는 경우에는 쓰기 가능한 프로젝트 폴더에 가상환경을 만들고 그 안의 Python으로 pip를 실행하는 방법이 적합합니다. 사용 중인 파일이나 임시 경로의 차단은 별도 원인 확인이 필요하며, 관리자 실행이 모든 경우의 해결책은 아닙니다.
오류 번호보다 실패한 경로를 함께 확인합니다
Windows 오류 코드 5는 접근이 거부되었다는 뜻입니다. pip의 마지막 오류 줄에서 어느 파일을 만들거나 바꾸지 못했는지 봅니다. Program Files의 Python 폴더를 가리키는 경우와 임시 폴더를 가리키는 경우를 같은 문제로 처리하지 않습니다.
| 오류에 보이는 대상 | 확인할 점 | 다음 조치 |
|---|---|---|
| 전역 Python의 Lib\site-packages | 선택한 Python과 폴더 쓰기 권한 | 프로젝트 가상환경으로 설치 대상을 분리 |
| Scripts 아래 실행 파일·기존 패키지 파일 | 관련 프로그램이 사용 중인지, 차단 기록이 있는지 | 해당 프로그램만 종료하고 같은 환경에서 재시도 |
| Temp·캐시·다른 작업 폴더 | 그 경로의 쓰기 권한·용량·보안 정책 | 실패한 경로 자체를 확인하고 필요 시 관리자에게 정책 검토 요청 |
| 설치 후 import만 실패 | 설치한 Python과 실행하는 Python의 일치 | 인터프리터 경로와 패키지 Location 비교 |
표는 확인 순서이며 오류 경로만으로 원인을 단정하는 목록은 아닙니다. 회사·학교에서 관리하는 PC라면 지정된 환경과 설치 정책을 따르고, 시스템 폴더 전체의 권한을 풀거나 보안 프로그램을 끄는 방식으로 해결하지 않습니다.
어느 Python의 pip인지 먼저 확인
아래 명령은 Windows PowerShell에서 실행합니다. >>>가 표시된 Python 대화형 창에 입력하는 명령이 아닙니다. py -3를 사용할 수 없다면 실제 설치된 Python의 실행 파일 경로 또는 그 Python을 가리키는 python 명령으로 바꿉니다. 여러 버전이 있다면 원하는 실행기를 명시적으로 선택합니다.
py -3 -c "import sys; print(sys.executable)"
py -3 -m pip --version
첫 줄은 실행 파일 경로, 둘째 줄은 pip의 버전·위치와 Python 버전을 보여 줍니다. python -m pip 방식은 지정한 Python으로 pip 모듈을 실행하므로 단독 pip 명령이 다른 환경을 가리키는 혼동을 줄입니다. 실제 오류를 낸 명령과 같은 Python인지 비교합니다.
프로젝트 가상환경에 설치하고 결과 확인
쓰기 가능한 새 프로젝트 폴더에서 PowerShell을 열고 다음 명령을 실행합니다. .venv는 프로젝트 소스와 구분한 가상환경 폴더이며, 이미 다른 용도로 사용 중인 폴더 위에 만들지 않습니다.
py -3 -m venv .venv
.\.venv\Scripts\python.exe -m pip --version
pip 경로가 프로젝트의 .venv 아래인지 확인합니다. 이후에는 그 Python을 직접 호출하므로 가상환경 활성화 스크립트나 PowerShell 실행 정책 변경이 필요하지 않습니다. 다음은 Colorama 0.4.6을 예제용으로 설치하고 가져오는 전체 명령입니다. 실제 프로젝트에서는 필요한 패키지와 버전을 사용합니다.
.\.venv\Scripts\python.exe -m pip install "colorama==0.4.6"
.\.venv\Scripts\python.exe -c "import colorama, sys; print(colorama.__version__); print(sys.prefix != sys.base_prefix)"
설치가 성공한 뒤 마지막 명령의 출력은 두 줄의 0.4.6과 True입니다. True는 가상환경에서 실행 중임을 뜻합니다. 명령 흐름은 Windows의 Python 3.12.14와 가상환경 pip 25.0.1에서 확인했으며, pip 로그의 상세 문구와 경로는 환경에 따라 달라집니다.
.\.venv\Scripts\python.exe -m pip show colorama
pip show의 Location이 프로젝트의 .venv\Lib\site-packages를 가리키는지 봅니다. 터미널에서 가져오기에 성공해도 IDE가 다른 Python을 선택하면 오류가 날 수 있으므로 IDE 인터프리터도 같은 .venv\Scripts\python.exe로 맞춥니다.
--user는 가상환경 밖에서 선택하는 대안
--user 설치는 전역 폴더 대신 해당 Python의 사용자 패키지 경로에 설치합니다. 프로젝트별 격리가 필요 없는 개인 환경에서 선택할 수 있지만, 여러 프로젝트의 패키지 버전을 분리해 주지는 않습니다. 먼저 앞 절의 실행기 확인으로 기본 Python을 정한 뒤 사용합니다.
py -3 -m pip install --user "colorama==0.4.6"
이 명령은 기본 Python의 사용자 경로에 예제 패키지를 설치합니다. 앞에서 만든 가상환경에서는 사용하지 않습니다. 기본적인 격리 가상환경은 사용자 패키지 경로가 보이지 않으므로 --user 설치를 거부합니다. 가상환경 안에서 같은 권한 오류가 난다면 user 옵션을 더하기보다 실제 실패 경로를 다시 확인합니다.
여전히 실패하거나 pip가 없을 때
다른 오류를 권한 문제로 오인하지 않도록 마지막 메시지를 읽습니다. No matching distribution found, 인증서·프록시·네트워크 오류는 각각 패키지 호환성이나 연결 설정을 확인할 문제입니다. Python 패키지 설치 안내를 기준으로 실행기와 패키지 요구 사항을 맞춥니다.
방금 만든 가상환경에서 No module named pip가 나온 경우에는 그 환경의 pip를 다음처럼 복구할 수 있습니다. ensurepip는 Python에 포함된 pip를 준비하는 도구이며 인터넷의 최신 버전으로 반드시 갱신한다는 뜻은 아닙니다.
.\.venv\Scripts\python.exe -m ensurepip --upgrade
.\.venv\Scripts\python.exe -m pip --version
기본 Python에 ensurepip 자체가 없거나 가상환경 생성이 계속 실패하면 배포판의 설치 구성과 경로를 확인합니다. 기존 패키지 파일을 사용 중인 IDE·프로그램이 확인되면 그 프로그램을 정상 종료한 뒤 재시도합니다. 보안 도구가 차단했다면 해당 기록을 근거로 허용 여부를 검토하고, 관리자 권한 설치가 조직의 의도된 배포 방식일 때만 그 절차를 사용합니다.
예제 설치를 되돌리는 방법
새 예제 가상환경에 설치한 Colorama만 제거하려면 다음 명령을 사용합니다. -y는 제거 확인 질문을 생략하므로 해당 환경의 예제 패키지라는 점을 먼저 확인합니다.
.\.venv\Scripts\python.exe -m pip uninstall -y colorama
pip uninstall은 지정한 환경의 패키지를 제거합니다. 필요 없어진 새 가상환경은 소스가 그 안에 없고 다른 프로젝트가 참조하지 않는지 확인한 뒤 정리할 수 있습니다. 기존 프로젝트의 의존성을 바꾼 경우에는 프로젝트의 요구 버전 기록에 맞춰 되돌립니다. 오류 보고에는 실패한 명령, Python·pip 경로, 마지막 오류와 대상 파일 경로를 함께 남기면 진단에 도움이 됩니다.




