Python에서 ModuleNotFoundError가 발생하는 경우 해결법을 알아본다.
ModuleNotFoundError: No module named 'module_name'
1. 기본적으로 모듈이 설치되지 않아서 발생하는 경우
설치가 안되어서 에러가 난 게 맞는지 확인하려면 설치 하기 전에 현재 설치된 패키지 리스트를 확인한다.
Python 현재 설치된 패키지 리스트 확인하기:
pip list
리스트에 포함되어 있다면 다음 스텝으로 넘어가고, 리스트에 포함되지 않았다면 설치한다.
pip install 명령어로 'module_name'에 해당하는 python module을 설치한다.
환경에 따라 pip3가 설치됐다면 pip3 install 명령어를 이용한다.
pip install 'module_name'
중요⭐
이때 pip과 pip3를 동시에 관리하는 경우도 있다.
이 경우 새로운 모듈을 설치하기 위해 pip command를 사용해야 할지, pip3 command를 사용할지 헷갈릴 수 있다.
그런 경우는 아래 stackoverflow를 참고하면 좋다.
https://stackoverflow.com/questions/41650158/how-to-change-pip-installation-path
https://stackoverflow.com/questions/9780717/bash-pip-command-not-found
pip이 중복 설치되었거나 충돌난 경우, 링크가 깨진 경우일 수 있다.
이때 링크를 pip 버전에 맞게 재설정 해준다.
pip --version
/usr/local/bin/pip
ln -s /Library/Frameworks/Python.framework/Versions/2.6/bin/pip /usr/local/bin/pip
2. 모듈은 설치됐지만 파이썬 버전 관리가 안된 경우
pip install 명령어로 패키지 설치를 했지만 Python 여러 버전을 관리할 때 버전 확인이 안되면 ModuleNotFoundError 가 발생하기도 한다.
먼저 Python이 모듈과 패키지를 찾아가는 경로를 확인한다.
import sys
sys.path
리스트 결과 중 프로젝트에 사용되는 Python 버전 경로가 없다면 추가해준다.
이 경우는 모듈을 가져오는 경로에 해당하는 모듈이 존재하지 않았기 때문이다.
sys.path.append('python_version_path')
sys.path
'python_version_path'는 설치된 python site-packages 경로이다.
설치된 모듈의 위치를 시스템 환경변수(PYTHONPATH)에 추가해준다는 의미이다.
모듈이 설치된 위치는 pip install 명령어를 중복 실행 결과 "Requirement already satisfied: 'module_name' in 'path'" 메세지로 알 수 있다.
추가 한 후 sys.path에 적용됐는지 확인한 뒤 계속해서 ModuleNotFoundError가 발생하는지 확인한다.
웬만하면 1, 2번 같은 경우이니 참고해서 해결해보고, 두 방법이 모두 아닌 경우는
import module 할 때 모듈이 설치된 위치를 상대경로가 아닌 절대경로로 지정해보는 방법도 시도해볼 수 있다.
Reference
'Programming Language > [Python]' 카테고리의 다른 글
[Python] pytimekr 패키지 (0) | 2024.03.22 |
---|---|
[Python] selenium.common.exceptions.ElementClickInterceptedException (1) | 2024.02.28 |
[Python] ValueError: If using all scalar values, you must pass an index (0) | 2023.11.10 |
[Python] UUID로 고유 식별자 만들기 (0) | 2023.09.15 |
[Python] pandas dataframe 행/열 count (0) | 2023.07.12 |