Poetry: Python 프로젝트 의존성 관리 도구
개요
Poetry는 Python 프로젝트의 의존성 관리와 패키징을 위한 현대적인 도구이다. 복잡한 프로젝트 환경에서 패키지 의존성 관리, 가상환경 설정, 배포 등을 통합적으로 처리할 수 있게 해 주어 개발자의 작업 효율성을 크게 향상시킨다. 특히 기존의 pip와 virtualenv를 별도로 사용하는 방식보다 일관된 워크플로우를 제공하며, pyproject.toml
파일을 통해 프로젝트 설정을 명확하게 관리할 수 있다.
설명
Poetry는 2018년에 등장한 이후로 Python 개발 생태계에서 중요한 위치를 차지하게 되었다. 이 도구는 Python 애플리케이션 및 라이브러리 개발 시 발생하는 여러 문제점을 해결하기 위해 설계되었다. 주요 기능으로는 의존성 관리, 가상환경 자동화, 패키지 빌드 및 배포 지원 등이 있다.
Poetry의 핵심은 pyproject.toml
파일을 통한 선언적 프로젝트 정의이다. 이 파일에는 프로젝트 메타데이터, 의존성 정보, 개발 의존성 등이 포함된다. Poetry는 이 정보를 기반으로 프로젝트의 가상환경을 자동으로 설정하고, 필요한 패키지를 정확한 버전으로 설치한다. 또한, Poetry는 poetry.lock
파일을 생성하여 의존성의 정확한 버전을 고정함으로써 개발 환경의 일관성을 보장한다.
특징
Poetry가 가진 주요 특징은 다음과 같다:
- 통합된 의존성 관리: 하나의 도구로 패키지 설치, 제거, 업데이트 등을 모두 처리할 수 있다.
- 자동화된 가상환경: 프로젝트별 가상환경을 자동으로 생성하고 관리한다.
- 선언적 의존성 정의:
pyproject.toml
파일을 통해 프로젝트 설정과 의존성을 명확하게 정의한다. - 의존성 잠금:
poetry.lock
파일을 통해 의존성 버전을 고정하여 재현 가능한 빌드를 보장한다. - 빌드 및 배포 지원: 패키지 빌드와 PyPI 배포를 위한 기능을 내장하고 있다.
- 직관적인 명령어 체계: 사용자 친화적인 명령어로 복잡한 작업을 간편하게 수행할 수 있다.
- VS Code 통합: 적절한 설정을 통해 VS Code에서 Poetry 가상환경을 쉽게 인식하고 사용할 수 있다.
예시
Poetry의 실제 사용 예시를 살펴보자.
1. Poetry 설치
Linux, macOS, Windows(WSL)에서는 다음 명령어로 설치할 수 있다:
curl -sSL https://install.python-poetry.org | python3 -
Windows(Powershell)에서는:
(Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | py -
2. 새 프로젝트 생성
poetry new my-project
이 명령은 다음과 같은 구조의 프로젝트를 생성한다:
my-project/
├── pyproject.toml
├── README.md
├── my_project/
│ └── __init__.py
└── tests/
└── __init__.py
3. 기존 프로젝트에 Poetry 적용
cd existing-project
poetry init
대화형 프롬프트에 따라 프로젝트 정보와 의존성을 입력하면 pyproject.toml
파일이 생성된다.
4. 의존성 관리
패키지 추가:
poetry add requests
개발 의존성 추가:
poetry add pytest --dev
패키지 제거:
poetry remove requests
의존성 업데이트:
poetry update
5. 가상환경 사용
가상환경 활성화:
poetry shell
가상환경에서 명령 실행:
poetry run python script.py
6. VS Code에서 Poetry 가상환경 인식을 위한 설정
poetry config virtualenvs.in-project true
poetry config virtualenvs.path "./.venv"
결론
Poetry는 Python 프로젝트 관리의 복잡성을 크게 줄여주는 강력한 도구이다. 의존성 관리부터 가상환경 설정, 패키지 빌드 및 배포까지 통합된 워크플로우를 제공함으로써 개발자는 핵심 개발 작업에 더 집중할 수 있게 된다. 특히 팀 프로젝트에서 일관된 개발 환경을 유지하는 데 큰 도움이 되며, pyproject.toml
과 poetry.lock
파일을 통한 명확한 의존성 관리는 "내 컴퓨터에서는 작동합니다"와 같은 문제를 크게 줄여준다.
현대적인 Python 개발에 있어 Poetry는 선택이 아닌 필수 도구로 자리 잡고 있으며, Python 패키지 생태계의 표준화와 품질 향상에 기여하고 있다. 이제 막 Python 개발을 시작하는 초보자부터 복잡한 프로젝트를 관리하는 숙련된 개발자까지, Poetry는 모든 수준의 개발자에게 가치 있는 도구가 될 것이다.
참고문헌
- Poetry 공식 문서: https://python-poetry.org/docs/
- Python 패키징 사용자 가이드: https://packaging.python.org/
- PEP 518 – Specifying Minimum Build System Requirements for Python Projects: https://peps.python.org/pep-0518/