파이썬에서 Module이란 함수, 변수, 클래스 등 코드들의 집합이다.
사용자가 직접 제작할 수도 있지만, 파이썬 자체적으로 여러가지 필요한 Module들을 기본적으로 가지고 있다.
사용하고 싶은 Module을 내 파일이나 프로젝트에 반영하려면 import를 해야 한다. 물론 시스템에 내장되어 있는 표준 모듈(sys, dateTime...)들은 import 시키지 않아도 이미 자동 import 되어 있다.
그 외에 사용자가 필요로 하는 Module들이나 직접 사용자가 정의한 Module들은 따로 import 시켜야 한다.
파이썬은 코드 실행 시 필요한 Module들을 import하기 위해 모듈/패키지들을 찾는데, sys.modules -> built-in -> sys.path 순으로 모듈들을 찾는다.
print(Sys.modules['sys']) 을 실행해보면 다음과 같이 나온다.'sys': <module 'sys' (built-in)>
└── my_app
├── main.py
├── package1
│ ├── module1.py
│ └── module2.py
└── package2
├── __init__.py
├── module3.py
├── module4.py
└── subpackage1
└── module5.py
Absolute paths는 모듈 및 패키지의 시작부터 끝까지 모두 서술한 경로다. '대한민국 경기도 광주시 XX동...'와 같다고 보면 된다.
위와 같이 my_app이라는 프로젝트가 있으면 module4.py를 찾을 때
from package2.module4 import function4
와 같이 패키지-> 모듈 -> 함수까지 모든 주소를 다 망라하는 것이다.
Relative Path는 현재 작업 디렉토리에 있다는 전제하의 경로를 서술하는 것이다. 전라도에 있다는 전제하에 '광주시 XX동...'와 같다고 보면 된다.
위와 같이 my_app이라는 프로젝트가 있으면 현재 Package2에서 작업하고 있다면,
from .module4 import function4와 같이 설정하면 된다.
.module4처럼 현재 디렉토리를 표현하려면 .을 붙이면 된다.

# absolute path
#from calculator.add_and_multiply import add_and_multiply
# relative path
from .calculator.add_and_multiply import add_and_multiply
if __name__ == '__main__':
print(add_and_multiply(1,2))
from calculator.add_and_multiply import add_and_multiply
if __name__ == '__main__':
print(add_and_multiply(1,2))
from calculator import * 라고만 쓰고, 나머지는 해당 패키지(Calculator)에서 사용할 주요 함수들을 미리 import해놓는 것이다. from .add_and_multiply import add_and_multiply
__all__ = ['add_and_multiply']