python path problem

김동현·2023년 11월 6일

python

목록 보기
4/8

파이썬 경로 문제

문제 정의

project/
│
├── main.py
└── a_dir/
    ├── __init__.py
    ├── a_run.py
    └── a_b.py

위와 같은 디렉토리 구조에서
main.py를 통해 a_run.py를 호출하고 여기서 다시 a_b를 참조하는 경우
a_run 파일에서 다음과 같이 절대 경로로 명시하였다면 오류가 생길 수 있습니다.

from a_b import a_b_function

해결 방법

이 경우 두 가지 방법으로 해결 가능합니다

1. 상대 경로 사용

from .a_b import a_b_function

위와 같이 경로에 .을 붙여 상대 경로로 사용합니다

2. 파이썬 스크립트가 실행될 때 'sys.path'에 프로젝트의 루트 디렉토리 추가

  • 이 방법은 프로젝트 구조나 환경 설정에 따라 sys.path에 경로가 올바르게 설정되지 않아
    절대 경로로 모듈을 찾을 수 없는 상황을 해결합니다.
import sys
import os

# 프로젝트의 루트 디렉토리 경로를 얻습니다.
root_path = os.path.dirname(os.path.abspath('main.py'))

# sys.path에 프로젝트 루트를 추가합니다.
if root_path not in sys.path:
    sys.path.append(root_path)

# 이제 a_dir 패키지 내부의 모듈을 절대 경로로 임포트할 수 있습니다.
from a_dir.a_b import a_b_function
profile
nice to meet you:)

0개의 댓글