가상환경을 켰고 pip install도 했음에도 불구하고,
파이썬에서 ModuleNotFoundError: No module named 'xxx' 에러가 뜨는 경우가 종종 발생합니다.
이럴 때 which python 과 which pip 명령어를 확인해보면 서로 다른 경로를 가리키고 있는 경우가 많습니다.
$ which python
/home/사용자/projects/venv/bin/python ← (가상환경 내부)
$ which pip
/usr/bin/pip ← (시스템 pip, 잘못된 경로)
즉, 가상환경은 켜졌지만 pip가 시스템 전역을 참조하고 있어서 모듈이 설치되지 않는 문제가 발생하는 것입니다.
source venv/bin/activate
또는 conda인 경우:
conda activate myenv
python -m ensurepip --upgrade
이것은 가상환경 안에 정확한 버전의
pip를 강제로 설치하고 활성화해줍니다.
pip 경로와 python 경로 일치 여부 확인which python
which pip
둘 다 /home/사용자/.../venv/ 경로를 가리키고 있어야 정상입니다.
이후 패키지 설치는 항상 아래처럼 명시적으로:
python -m pip install [패키지명]
python -m pip를 쓰면 항상 현재 실행 중인 Python 환경에 패키지를 설치합니다. 가장 안전한 방식입니다.
그래도 문제가 해결되지 않는다면, 가상환경을 삭제 후 재생성:
rm -rf venv
python -m venv venv
source venv/bin/activate
python -m ensurepip --upgrade
| 단계 | 설명 |
|---|---|
| 1 | 가상환경 정상 실행 확인 (source venv/bin/activate) |
| 2 | python -m ensurepip로 pip 재설치 |
| 3 | which python, which pip 경로 일치 확인 |
| 4 | python -m pip install로 설치 |
| 5 | 이상할 땐 venv 삭제 후 재생성 |