본문 바로가기

Programming Language/[Python]

[Python] ModuleNotFoundError

728x90
반응형

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

 

How to change pip installation path

I am using Mac. My pip installation path is /Library/Python/2.7/site-packages. How do I change it to ~/anaconda/lib/python2.7/site-packages/? Oftentimes, the package installed by pip won't be foun...

stackoverflow.com

https://stackoverflow.com/questions/9780717/bash-pip-command-not-found

 

bash: pip: command not found

I downloaded pip and ran python setup.py install and everything worked just fine. The very next step in the tutorial is to run pip install <lib you want> but before it even tries to find anyt...

stackoverflow.com

 

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

반응형