Poetry는 Python 프로젝트 관리를 위한 종합적인 도구로, 의존성 관리 및 패키징을 간편하게 처리할 수 있도록 도와줍니다. Poetry는 가상 환경을 생성하고, 프로젝트 의존성을 관리하며, 패키지를 배포할 수 있는 기능을 제공합니다. 이 도구는 pyproject.toml 파일을 사용하여 프로젝트 설정을 저장합니다.
Poetry 설치
Poetry는 curl 명령어나 pip를 통해 설치할 수 있습니다.
curl -sSL https://install.python-poetry.org | python3 -
또는
pip install poetry
설치가 완료되면, Poetry의 명령어를 사용할 수 있습니다.
Poetry 프로젝트 생성
Poetry를 사용하여 새로운 프로젝트를 생성하는 방법은 다음과 같습니다:
poetry new my_project
프로젝트 구조
기본 프로젝트 구조는 다음과 같습니다:
my_project/
├── pyproject.toml
├── README.rst
├── my_project
│ └── __init__.py
└── tests
└── __init__.py
pyproject.toml 파일
이 파일은 프로젝트의 메타데이터와 의존성을 정의하는 곳입니다. 예를 들어, 다음과 같은 내용을 포함할 수 있습니다:
[tool.poetry]
name = "my_project"
version = "0.1.0"
description = "A short description of the project"
authors = ["Your Name <you@example.com>"]
[tool.poetry.dependencies]
python = "^3.8"
requests = "^2.25.1"
[tool.poetry.dev-dependencies]
pytest = "^6.2.4"
의존성 관리
Poetry를 사용하여 프로젝트 의존성을 추가, 제거 및 업데이트할 수 있습니다.
의존성 추가
poetry add requests
개발 의존성 추가
poetry add --dev pytest
의존성 제거
poetry remove requests
가상 환경 관리
Poetry는 가상 환경을 자동으로 생성하고 관리합니다. 가상 환경을 활성화하려면 다음 명령을 사용합니다
poetry shell
가상 환경을 종료하려면 일반적으로 exit 명령을 사용합니다.
스크립트 실행
Poetry는 가상 환경 내에서 스크립트를 실행할 수 있는 명령을 제공합니다
poetry run python script.py
패키징 및 배포
Poetry를 사용하여 패키지를 빌드하고 배포할 수 있습니다. 패키지를 빌드하려면 다음 명령을 사용합니다
poetry build
이 명령은 dist 디렉터리에 패키지를 생성합니다. 패키지를 배포하려면 다음 명령을 사용합니다
Poetry와 requirements 차이
Poetry와 requirements.txt는 Python 프로젝트에서 의존성을 관리하는 두 가지 방법으로, 각각의 방식에는 장단점이 있습니다. 아래에서 두 방법의 차이점과 장단점을 비교해보겠습니다.
구분 | Poetry | requirements.txt |
개요 | Poetry는 종합적인 Python 프로젝트 관리 도구로, 의존성 관리, 가상 환경 관리, 패키징 및 배포를 모두 지원합니다. | requirements.txt 파일은 전통적인 Python 의존성 관리 방법으로, 프로젝트에 필요한 패키지와 그 버전을 목록으로 작성합니다. |
장점 |
|
|
단점 |
|
|
요약
- Poetry는 의존성 관리, 가상 환경 관리, 패키징 및 배포를 모두 통합하여 제공하며, 현대적인 Python 프로젝트 관리 도구입니다. 이는 더 많은 기능과 일관된 워크플로우를 제공하지만, 초기 학습이 필요할 수 있습니다.
- **requirements.txt**는 단순하고 광범위하게 호환되며, 대부분의 Python 프로젝트에서 사용됩니다. 그러나 의존성 충돌 해결 및 가상 환경 관리에서 추가적인 수동 작업이 필요할 수 있습니다.
'Python' 카테고리의 다른 글
데이터 시각화를 빠르게! Streamlit으로 웹 애플리케이션 만들기 (0) | 2024.10.10 |
---|---|
Python 3.12의 혁신! 더욱 유연해진 f-string과 새로운 기능 탐구 (0) | 2024.09.24 |
왜 FastAPI는 최고의 선택인가? 빠른 API 개발을 위한 혁신적인 Python 프레임워크 (0) | 2024.09.09 |
[Coroutine] 코루틴이란 무엇인가? (0) | 2024.07.08 |
[FastAPI] FastAPI란 무엇인가? (0) | 2024.05.30 |