네임스페이스 패키지와 일반 패키지의 차이점: mypy 오류 해결 방법
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
DevOps
대상자
AI/데이터 과학 개발자, 대규모 코드베이스/마이크로서비스 환경에서 작업하는 개발자
난이도: 중급~고급 (mypy 설정, 네임스페이스 패키지 이해 필요)
핵심 요약
- 네임스페이스 패키지는
init.py
파일 없이 다중 폴더/리포지토리에 분산되어 구성됨 (예:coretools.featurestore.encoder
와libs.featurestore.scaler
공존 가능) - mypy 오류 해결 방법으로
MYPYPATH
설정,-explicit-package-bases
플래그 사용,init.pyi
가상 파일 추가가 필수 - 정적 분석 도구(예: mypy)는 네임스페이스 패키지에서 자동으로 타입 추론/모듈 검색 실패 가능 (환경 설정 오류 시)
섹션별 세부 요약
1. 일반 패키지 vs 네임스페이스 패키지
- 일반 패키지:
init.py
파일 필수, 단일 폴더 내에 포함됨, mypy/IDE 처리 쉬움 - 네임스페이스 패키지:
init.py
불필요, 다중 폴더/리포지토리 간 분산, AI/ML 도구에서 모듈화 필요 시 사용 - 예시:
coretools.featurestore.encoder
와libs.featurestore.scaler
는 동일한featurestore
네임스페이스 내에 존재 가능
2. AI/데이터 팀이 신경 써야 할 이유
- 모듈화된 파이프라인: 훈련 로직과 피처 저장소가 다른 리포지토리에 분리된 경우
- 플러그인 시스템: 실험 추적, 커스텀 메트릭, 전처리 레이어 구현 시
- 공유 AI 도구: 내부 라이브러리 간 네임스페이스 사용 가능성 (의식하지 못한 경우 많음)
3. mypy 오류 해결 체크리스트
- 네임스페이스 지원 활성화:
mypy
설정 파일에서namespace_packages = True
설정 - 패키지 이름 명시:
your.package.name
대신 폴더 이름만 사용하지 않도록 주의 - 환경 변수 설정:
MYPYPATH
지정, 비표준 소스 레이아웃 시-explicit-package-bases
플래그 사용 - 대체 해결책:
init.pyi
가상 파일 추가 (mypy가 타입 정보를 인식하도록 유도)
결론
- 네임스페이스 패키지 사용 시 mypy 설정을 반드시 조정해야 하며,
MYPYPATH
와-explicit-package-bases
사용,init.pyi
파일 추가가 핵심 - 코드베이스 확장성과 정적 분석 도구 호환성을 위해 패키지 구조와 mypy 설정을 일관되게 유지해야 함