본문 바로가기
AI/파이썬

No module named '***' (상위 디렉토리에 사용자 모듈이 있는 경우)

by 알푼 2025. 2. 3.
300x250

No module named '***'는 사용자가 직접 작성한 모듈이 import 되지 않을 때 발생하는 오류이다. 많은 문제 상황이 있지만 현재 작성 중인 파일에서 디렉토리 설정에 문제가 있을 때 발생하여 이 부분을 기록한다.

 

문제 상황

사용자 작성 모듈이 현재 작업하고 있는 폴더의 하위 폴더에 담겨 있지 않고, 상위 폴더에 있는 경우에 발생

 

예를 들어, 디렉토리가 다음과 같이 구성되어 있다고 가정 한다.

└ module

    └ user_module

└ scripts

    └ main

 

이런 상황에서 main 파일에 코드를 작성하고 있다고 가정해보자. 이 때 user_module을 import 하려면 아래와 같이 import 한다.

import module.user_module

이 경우 다음과 같은 에러가 발생할 것이다.

No module named 'module'

 

해결 방법

물론 인위적으로 main 파일을 상위 폴더로 옮겨서 작업할 수 있다. 그러면 특별한 변경점 없이도 쉽게 문제 해결이 가능하지만, 상황에 따라서는 반드시 main 파일을 따로 디렉토리에 관리해야할 필요가 있어서 옮기기 어려운 경우도 있다. 이 때, 간단한 코드로 해결 가능하다. 아래와 같은 코드만 module import 앞쪽에 넣어주면 이렇게 디렉토리가 달라도 사용자 작성 모듈을 불러올 수 있다.

import os
import sys
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

댓글