setup.cfg
setup.cfg는 파이썬 프로젝트의 설정을 관리하는 구성 파일이다.
이 파일은 INI 형식으로 작성되며, setuptools가 프로젝트를 빌드하고 배포할 때 참조하는 중요한 설정들을 포함한다.
주요 특징
- 선언적 구성: setup.py에서 프로그래밍 방식으로 정의하던 설정을 보다 간단하고 명확한 형식으로 선언할 수 있습니다.
- 정적 메타데이터: 프로젝트의 이름, 버전, 설명 등 변경이 잦지 않은 정보를 저장하는 데 적합합니다.
- 도구별 설정: 다양한 개발 도구들의 설정을 한 곳에서 관리할 수 있습니다.
주요 섹션
[metadata]:
프로젝트의 기본 정보를 정의한다.
여기에는 프로젝트 이름, 버전, 작성자 정보, 라이선스 등이 포함된다.
이 정보는 PyPI에 패키지를 등록할 때 사용되며, pip로 패키지를 설치할 때 표시되는 정보의 기반이 된다.[options]:
패키지 의존성, 포함할 패키지 등을 지정한다.
여기서는 필요한 Python 버전, 의존성 패키지, 패키지에 포함될 파일들을 지정할 수 있다.
options.extras_require를 통해 개발이나 문서화같은 특정 목적을 위한 추가 의존성을 정의할 수 있다.[options.extras_require]: 선택적 의존성을 정의한다.
도구별 설정 섹션
각종 개발 도구들의 설정을 관리한다. 예를 들어:
- pytest: 테스트 설정
- flake8: 코드 린팅 규칙
- mypy: 타입 체킹 설정
- isort: 임포트 정렬 규칙
- coverage: 코드 커버리지 측정 설정
장점
- 가독성: INI 형식으로 작성되어 setup.py보다 읽기 쉽고 관리하기 편하다.
- 중앙화된 설정: 여러 도구의 설정을 한 파일에서 관리할 수 있다.
- 버전 관리 용이성: 텍스트 기반 파일이므로 버전 관리 시스템과 잘 통합된다.
주의사항
- 동적 설정의 한계: 복잡한 로직이나 동적으로 생성되는 값은 여전히 setup.py에서 처리해야 할 수 있다.
- 도구 호환성: 일부 오래된 도구들은 setup.cfg를 완전히 지원하지 않을 수 있다.