모듈은 보통 하나의 `.py` 파일이고, 패키지는 모듈을 묶는 이름 공간이다. import는 파일을 매번 실행하는 문법이 아니다.

from pathlib import Path
from .rules import legal_moves

점으로 시작하는 상대 import는 패키지 안의 관계를 뜻한다. 실행 파일은 패키지 바깥의 얇은 진입점으로 두고, 내부 모듈을 파일 경로로 직접 실행하지 않는다. 패키지는 `python -m package.module`처럼 실행하면 import 기준이 안정된다.

순환 import는 A가 초기화되는 동안 B가 다시 A의 아직 만들어지지 않은 이름을 읽게 한다. 공통 타입을 세 번째 모듈로 옮기거나 의존 방향을 한쪽으로 만든다. 함수 안 import는 임시 회피이지 구조 해결은 아니다.

`from module import *`는 이름의 출처를 숨기고 충돌을 만든다. 필요한 이름만 가져오거나 모듈 이름을 붙여 쓴다.

Python 12. 모듈, 패키지, import의 핵심 흐름도
그림. import는 모듈을 한 번 초기화하고 같은 객체를 재사용한다.