Jupyter Notebook에서 Python 모듈을 임포트하려고 할 때 ModuleNotFoundError: No module named 'common.functions' 오류가 발생하는 경우가 있습니다. 이 문제는 주로 작업 디렉토리와 모듈 경로가 일치하지 않거나, 경로 설정이 잘못된 경우에 발생합니다. 이번 포스팅에서는 이 문제의 원인과 해결 방법을 단계별로 정리합니다.
문제의 원인
- 모듈 경로 불일치
- common/functions.py가 Jupyter Notebook에서 실행 중인 파일(notebook.ipynb)과 서로 다른 디렉토리에 위치해 있으면 Python이 모듈을 찾을 수 없습니다.
- Jupyter Notebook 작업 디렉토리(CWD) 문제
- Jupyter Notebook은 **현재 작업 디렉토리(CWD)**를 기준으로 파일을 찾습니다.
- 그러나 Jupyter Notebook을 실행하는 서버의 디렉토리가 기본 디렉토리로 설정될 수 있어, common/functions.py가 있는 경로와 일치하지 않을 수 있습니다.
- 경로 설정 오류
- 상대 경로(os.pardir)를 사용할 때 Jupyter Notebook 환경에서 경로가 올바르게 설정되지 않을 수 있습니다.
해결 방법
다음은 Jupyter Notebook에서 ModuleNotFoundError를 해결하기 위한 구체적인 방법입니다.
1. 현재 작업 디렉토리 확인 및 설정
작업 디렉토리를 확인하고, 필요한 경우 올바른 디렉토리로 변경합니다.
import os
# 현재 작업 디렉토리 확인
print("현재 작업 디렉토리:", os.getcwd())
# 필요한 경우 작업 디렉토리를 변경
os.chdir('/absolute/path/to/project_directory') # common 디렉토리의 부모 디렉토리로 변경
print("변경된 작업 디렉토리:", os.getcwd())
2. Python 경로에 common 디렉토리 추가
Jupyter Notebook이 common/functions.py를 찾을 수 있도록 Python 경로에 common 디렉토리를 추가합니다.
import sys
# common 디렉토리의 부모 디렉토리를 Python 경로에 추가
sys.path.append('/absolute/path/to/project_directory')
3. 프로젝트 디렉토리 구조 확인
Python 모듈이 있는 디렉토리와 Jupyter Notebook 파일의 위치가 아래와 같이 구성되어 있어야 합니다.
project_directory/
├── common/
│ ├── functions.py
│ ├── gradient.py
├── notebook.ipynb # Jupyter Notebook 파일
여기서 notebook.ipynb는 common 디렉토리와 같은 부모 디렉토리에 위치해야 합니다.
4. 모듈 임포트
경로를 제대로 설정한 뒤, 원하는 모듈을 임포트합니다.
from common.functions import softmax, cross_entropy_error
from common.gradient import numerical_gradient
5. 절대 경로를 사용하여 경로 설정
상대 경로(os.pardir) 대신 절대 경로를 사용하여 Python 경로를 명확히 설정합니다.
import os
import sys
# 절대 경로로 설정
project_path = '/absolute/path/to/project_directory'
sys.path.append(project_path)
# 모듈 임포트
from common.functions import softmax, cross_entropy_error
from common.gradient import numerical_gradient
전체 코드 예시
아래는 모든 단계를 적용한 전체 코드입니다.
import os
import sys
# 현재 작업 디렉토리 확인 및 변경
print("현재 작업 디렉토리:", os.getcwd())
os.chdir('/absolute/path/to/project_directory') # 필요한 경우 절대 경로로 변경
print("변경된 작업 디렉토리:", os.getcwd())
# Python 경로에 프로젝트 디렉토리 추가
sys.path.append(os.getcwd())
# 모듈 임포트
from common.functions import softmax, cross_entropy_error
from common.gradient import numerical_gradient
추가 팁
Jupyter Notebook 실행 시 경로 문제 확인
- os.getcwd()와 sys.path를 출력하여 현재 디렉토리와 Python 경로가 올바른지 확인하세요.
print("현재 작업 디렉토리:", os.getcwd())
print("Python 경로:", sys.path)
내가 노트북에서 만든 모듈을 사용하려는 경우 .py 파일로 변환하여 실행
Jupyter Notebook의 경로 문제가 지속될 경우, 노트북을 .py 스크립트로 변환하여 실행하면 경로 문제를 해결할 수 있습니다.
jupyter nbconvert --to script functions.ipynb
결론
- **ModuleNotFoundError**는 Jupyter Notebook의 작업 디렉토리와 모듈 경로가 일치하지 않을 때 발생합니다.
- 경로 문제를 해결하려면:
- 작업 디렉토리를 올바르게 설정합니다.
- Python 경로에 필요한 디렉토리를 추가합니다.
- 상대 경로 대신 절대 경로를 사용하는 것이 가장 안전합니다.
- 직접만든 파일의 경우 .py 파일로 변환하여 실행
위 단계를 따라 Jupyter Notebook에서 모듈을 성공적으로 임포트하고 프로젝트 작업을 원활히 진행하세요!
'개발라이프' 카테고리의 다른 글
bfloat16 (Brain Floating Point 16-bit) (0) | 2024.12.20 |
---|---|
머신러닝에서 데이터 라벨링이란? (0) | 2024.12.18 |
수학에서 자주 사용하는 기호와 뜻: 완벽 정리 (0) | 2024.12.16 |
Keras 모델 정의 시 경고 메시지 해결 방법: keras.Input() 사용법 (0) | 2024.12.10 |
Google Colab에서 Google Drive로 파일 저장하는 방법 (1) | 2024.12.10 |