개요

부끄럽게도 파이썬 import structure가 구성되어 있는 상태에서만 써봐서 새로 프로젝트를 구성하려고 하니 module not found 를 경험하게 되었다.

이에 따라 표준 디렉토리 구조 및 패키지 임포트 방법을 살펴본 뒤 정리해둔다.

디렉토리 구조

project.git
  /project
    /subpackage
     __init__.py
     bar.py
   __init__.py
    /subpackage2
     __init__.py
     baz.py
   foo.py

foo.py는 아래와 같이 구성한다.

import project.subpackage.bar
print("foo")

bar에서는 아래와 같은 import도 가능하다. 즉 같은 depth 다른 디렉토리의 클래스 import가 가능하다.

import project.subpackage2.baz
print("bar")

실행 시 유의사항

위와 같이 패키지 구조를 잡아둔 뒤 ModuleNotFound 없이 정상 실행 하려면 아래의 2가지 중에 취향대로 실행해야 한다.

python3 -m project.foo
export PYTHONPATH=.
python3 project/foo.py

Reference

  • https://stackoverflow.com/questions/40304117/import-statement-works-on-pycharm-but-not-from-terminal
  • https://stackoverflow.com/questions/193161/what-is-the-best-project-structure-for-a-python-application