Poetry : Python 패키지 및 의존성 관리 도구

  • 카카오톡 공유하기
  • 네이버 블로그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 트위터 공유하기
  • 링크 복사하기

Python 개발에서 패키지 관리와 의존성 해결은 항상 중요한 과제였습니다. 기존의 pip와 requirements.txt 조합이나 setuptools는 복잡한 프로젝트에서 한계를 보였고, 이러한 문제를 해결하기 위해 Poetry가 등장했습니다. 이 글에서는 Poetry의 기본 개념부터 실제 사용법, 그리고 자주 발생하는 문제와 해결책까지 상세히 알아보겠습니다.

<출처: https://python-poetry.org/>

1. Poetry란 무엇인가?

Poetry는 Python 패키지의 의존성 관리와 패키징을 위한 도구로, 다음과 같은 특징을 가지고 있습니다:

  • 의존성 해결: 패키지 간 호환성을 자동으로 확인하고 해결
  • 격리된 환경: 프로젝트별 가상환경 자동 생성 및 관리
  • 패키지 게시: PyPI 등에 쉽게 패키지 배포 가능
  • 단일 설정 파일: pyproject.toml 하나로 모든 설정 관리
  • 락 파일: poetry.lock 파일로 정확한 의존성 버전 보장

2. Poetry 설치 및 기본 설정

2.1 Poetry 설치하기

Poetry는 공식 설치 스크립트를 사용하여 설치하는 것이 권장됩니다:

설치 후 PATH에 Poetry를 추가해야 합니다. 대부분 자동으로 추가되지만, 필요한 경우 다음 경로를 PATH에 추가하세요:

  • Linux/macOS: $HOME/.local/bin
  • Windows: %APPDATA%\Python\Scripts

2.2 기본 설정

Poetry의 설정은 다음 명령어로 확인하고 변경할 수 있습니다:

3. 프로젝트 관리

3.1 새 프로젝트 시작하기

새 프로젝트를 생성하면 다음과 같은 구조가 만들어집니다:

my-project/
├── pyproject.toml
├── README.md
├── my_project/
│   └── __init__.py
└── tests/
    └── __init__.py

3.2 pyproject.toml 파일 이해하기

pyproject.toml은 프로젝트의 모든 메타데이터와 의존성을 관리하는 핵심 파일입니다:

3.3 의존성 관리

4. 가상환경 관리

4.1 가상환경 생성 및 활성화

Poetry는 프로젝트별로 자동으로 가상환경을 생성하고 관리합니다:

4.2 Poetry 없이 가상환경 활성화하기

Poetry 쉘을 사용하지 않고 직접 가상환경을 활성화할 수도 있습니다:

5. 스크립트 실행 및 패키지 배포

5.1 스크립트 실행

Poetry를 사용하면 가상환경을 활성화하지 않고도 스크립트를 실행할 수 있습니다:

5.2 사용자 정의 스크립트

pyproject.toml에 사용자 정의 스크립트를 추가할 수 있습니다:

5.3 패키지 빌드 및 배포

6. 자주 발생하는 문제와 해결 방법

6.1 의존성 해결 충돌

의존성 충돌이 발생하면 다음과 같은 오류 메시지가 표시됩니다:

해결 방법:

  • Python 버전 요구사항 조정: poetry add package-name --python ">=3.9"
  • 호환되는 패키지 버전 찾기: poetry add package-name@^1.0.0

6.2 락 파일 충돌

여러 개발자가 동시에 작업할 때 poetry.lock 파일 충돌이 발생할 수 있습니다.

해결 방법:

  • 최신 변경사항 병합 후: poetry lock --no-update
  • 의존성 다시 계산: poetry lock

6.3 설치 오류

패키지 설치 중 오류가 발생하는 경우:

6.4 가상환경 문제

가상환경이 제대로 작동하지 않는 경우:

7. Poetry vs 다른 도구들

Poetry와 다른 Python 패키지 관리 도구들의 비교:

  • pip + requirements.txt: 간단하지만 의존성 해결이 부족하고 개발/배포 환경 분리가 어려움
  • pipenv: Poetry와 유사하지만 업데이트가 느리고 일부 기능이 제한적
  • conda: 과학 계산용 패키지에 강점이 있지만 일반적인 Python 개발에는 다소 무거움
  • Poetry: 현대적인 워크플로우, 의존성 해결, 패키징, 가상환경 관리를 모두 통합

8. 결론

Poetry는 Python 패키지 및 의존성 관리를 위한 강력하고 현대적인 도구입니다. 단일 설정 파일, 정확한 의존성 해결, 통합된 가상환경 관리 등의 기능은 개발자의 생산성을 크게 향상시킵니다. 특히 팀 프로젝트나 배포가 필요한 패키지 개발에서 그 효용성을 더욱 느낄수 있습니다.

Poetry를 사용하면 “이 코드는 내 컴퓨터에서는 작동해요”라는 문제에서 벗어나, 모든 환경에서 일관된 개발 경험을 제공할 수 있습니다. Python 개발을 더 효율적이고 즐겁게 만들어주는 Poetry를 다음 프로젝트에서 적용해보세요!


게시됨

카테고리

작성자

댓글

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다