sys.modules
sys.path
종합
파이썬은 import 하려는 모듈과 package를 찾을 때 우선 sys.modules을 확인하고 파이썬의 built-in modules를 확인, 마지막으로 sys.path에 지정되어 있는 경로들을 확인해서 찾는다
파이썬에 포함되어 있는 내장 모듈로 설치 시 자동적으로 경로값이 설정되어 있음
Absolute Path
Relative Path
ImportError: attempted relative import with no known parent package
Relative path로 모듈을 불러올 경우 위와 같은 에러가 출력된다.
그 이유는
Relative path는 항상 현 위치를 기준으로 import를 시작하며, 우린 import 경로의 최상위 디렉토리에 있는 main.py에서 import를 시작하였다.
어떤 모듈이나 패키지의 기본이 되는 main 모듈의 이름은 항상 __main__
이므로 relative path를 사용할 수 없으며, absolute path를 사용해야 하는 것으로 해석된다.
기본 모듈이 되는 main.py만 절대경로로 import한다는 전제 하에 add_and_multiply.py는 절대경로와 상대경로 둘 중 어느 하나를 골라도 차이가 없음을 확인하였다.
__init__.py
파일의 역할
init.py
는 특별한 코드를 갖고 있지 않지만 calculator의 하위 디렉토리가 패키지임을 명시한다.