PYTHONPATH
설정: 모듈을 찾는 경로를 환경 변수로 설정.sys.path
수정: 코드 상단에서 실행 중에 경로를 추가.- 패키지 실행:
python -m
을 사용해 모듈을 패키지로 실행.
방법 1: PYTHONPATH 설정
파이썬이 모듈을 찾을 수 있도록 프로젝트의 루트 디렉토리를 PYTHONPATH
에 추가할 수 있습니다.
export PYTHONPATH="${PYTHONPATH}:/path/to/your/project_root"
이 명령을 실행하여 환경 변수에 프로젝트의 루트 디렉토리를 추가하면, 모듈을 찾을 수 있게 됩니다. 한 번만 설정되므로 이를 영구적으로 설정하려면, .bash_profile
, .bashrc
, .zshrc
등에 추가해야 합니다.
예를 들어:
export PYTHONPATH="${PYTHONPATH}:/Users/jaehojoo/devel/pydantic/gen/supa_upadate/root"
이후에 다시 실행해 보면 문제가 해결될 수 있습니다:
python module_a/a_script.py
방법 2: sys.path를 수정하여 런타임에 경로 추가
sys.path
는 파이썬이 모듈을 찾기 위해 사용하는 경로 목록입니다. 파일 내에서 sys.path
에 루트 디렉토리를 추가하면, 파이썬이 해당 경로를 참조할 수 있게 됩니다. 이를 위해 module_a/a_script.py
의 상단에 다음 코드를 추가합니다:
import sys
import os
# 루트 디렉토리를 sys.path에 추가
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
from utils.helper import helper_function
def some_function_from_a():
print("This is a function from module A.")
helper_function()
if __name__ == "__main__":
print("Module A is being run directly.")
some_function_from_a()
예를 들어:
sys.path.append()
:sys.path
에 루트 디렉토리를 추가합니다.os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
는 현재 파일의 경로에서 상위 두 단계로 올라가서 프로젝트 루트 디렉토리의 경로를 가져옵니다. 이 경로를sys.path
에 추가하면,utils
모듈을 정상적으로 찾을 수 있게 됩니다.
방법 3: 패키지 형태로 실행
파이썬 3.6 이상에서는 모듈을 패키지로 실행할 수 있습니다. 이를 위해 -m
플래그를 사용하여 모듈을 패키지로 실행합니다. 루트 디렉터리에서 아래 명령어를 실행합니다:
python -m module_a.a_script
이 방법을 사용하면 module_a.a_script
가 패키지로 인식되어, utils
모듈을 정상적으로 찾을 수 있게 됩니다.