ModuleNotFoundError

J. Hwang·2024년 7월 24일

Github에서 코드를 받아와 실행해보는데 필요한 모듈을 모두 설치했음에도 불구하고

ModuleNotFoundError: No module named 'simulator'

이라는 에러가 뜨면서 모듈이 import 되지 않았다.

우선 모듈이 정말로 설치된 것인지 확인하려면 설치 명령어를 입력해보면 된다.

$ pip install simulator

이미 설치되어 있다면

Requirement already satisfied: simulator in /home/usr/anaconda3/lib/python3.8/site-packages

와 같은 메시지가 뜨면서 모듈이 설치된 경로를 알려준다.

(모듈이 설치되어 있지 않다면 설치하면 되겠다.)


그렇다면 모듈이 설치되어 있음에도 불구하고 import를 할 수 없는 이유는 무엇일까? 모듈을 가져오는 경로에 해당 모듈이 존재하지 않기 때문이다. 따라서 이런 경우에는 내가 가져오려는 모듈이 있는 경로를 추가해주면 된다.

우선 모듈을 가져오는 경로가 어디인지 확인하려면

import sys

>>> sys.path

과 같이 sys 모듈을 이용하면 된다.

sys.path 해서 출력되는 경로들의 목록을 확인하고, 그 목록들 중에 원하는 모듈 (simulator)이 설치된 경로가 없다면

>>> sys.path.append('/data1/new_dir')

위와 같이 import하고자 하는 모듈이 있는 경로를 추가해주면 된다.

이런 문제는 대체로 가상 환경에서 코드를 돌릴 때 생긴다. 가상 환경을 설치하면 보통 특정 프로그램을 실행시킬 때 필요한 모듈들을 가상 환경에 설치하게 되는데, 이는 평소에 사용하지 잘 사용하지 않는 모듈일 가능성이 크고, 평소처럼 항상 모듈을 가져오는 곳에서 모듈을 찾으면 당연히 없는 모듈이라는 에러가 뜨는 것이다. 따라서 가상 환경의 모듈이 설치되는 경로를 sys.path.append() 해주면 더 이상 에러가 뜨지 않을 것이다.


References

https://bigdata-doctrine.tistory.com/9

profile
Let it code

0개의 댓글