홍카나의 공부방

[Python] 윈도우 Poetry 사용법 본문

Programming Language/Python

[Python] 윈도우 Poetry 사용법

홍문관카페나무 2024. 6. 7. 22:28

 

 

Poetry

 

파이썬의 가상환경

 

파이썬은 가상환경을 이용해서 프로젝트마다 독립된 환경을 만들어 사용할 수 있다. 가상환경 덕분에 각각의 프로젝트가 필요한 패키지와 버전, 그리고 의존성을 관리할 수 있게 된다. 파이썬에서 사용하는 의존성 관리자는 여러 가지가 있다. 파이썬의 공식 의존성 관리자인 pip나 virtualenv를 같이 사용하는 Pipenv가 있는데, 이번 글에서는 poetry를 알아본다.

 

 

Poetry?

 

Poetry는 가상환경 및 패키지 관리 도구다. 프로젝트마다 필요한 패키지를 명시적으로 관리할 수 있고, 가상환경을 쉽게 관리할 수 있다. 의존성 정보를 모두 명령어로 기록하고 관리할 수 있고, 가상환경까지 자동으로 생성할 수 있어서 프로젝트를 진행할 때 선택할 수 있는 의존성 관리자이기도 하다.

 

 

Poetry 설치하기

 

이 글에서는 Windows 환경에서 설치를 진행해보겠다. MacOS나 Linux 기반의 설치 방법은 다른 게시글이나 공식문서를 참고하자. Poetry를 설치하는 방법은 여러가지가 있는데, 공식 문서에서 권장하는 방법 중 하나는 pipx를 이용해서 설치하는 것이다. pipx는 파이썬 어플리케이션을 격리된 가상 환경에서 설치하고 실행하는 도구다. pipx를 설치하기 위해 Scoop을 먼저 설치하고, pipx를 install 하면 되겠다.

 

참고)poetry 공식문서 - 설치

 

# scoop 설치 이후
scoop install pipx
pipx ensurepath

 

 


 

Poetry 기본 사용법

1) 신규 프로젝트 생성하기

poetry new {name} 명령어로 신규 프로젝트를 만들어본다. 터미널을 켜고, 하위 경로에 새로운 프로젝트를 생성하길 원하는 경로에서 아래 명령어를 실행한다.

poetry new poetry-test
# poetry new 로 생성한 프로젝트의 구조
.
├── poetry_test
│   └── __init__.py
├── pyproject.toml
├── README.md
└── tests
    └── __init__.py

 

위처럼 poetry-test 경로 아래에 여러 파일들이 만들어져 있을 것이다. 먼저 pyproject.toml을 살펴보자. 이 파일은 프로젝트에 대한 중요한 정보를 담고 있다. 프로젝트 이름, 버전, 파이썬 버전, 사용하는 의존성 등에 대한 정보를 모두 담고 있다.

 

[tool.poetry]
name = "poetry-test"
version = "0.1.0"
description = ""
authors = ["hongcana <hongcana@kakao.com>"]
readme = "README.md"

[tool.poetry.dependencies]
python = "^3.11"

[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"

 

2) 기존 프로젝트에 설정하기

기존에 만들어진 프로젝트에 Poetry를 이용하고 싶다면 해당 프로젝트 경로로 이동하여 poetry init을 이용한다.

poetry init

 

 

3) 의존성 관리하기

pyproject.toml에 필요한 의존성을 직접 추가하면 된다. toml 파일에 아래와 같이 입력한다.

[tool.poetry.dependencies]
pandas = "^2.1.4"

 

혹은 poetry add 명령어를 이용하여 .toml 파일을 직접 수정하는 대신에 의존성 정보를 기록 및 설치할 수 있다.

poetry add pandas

# 또는 직접 버전을 지정
poetry add pandas==2.1.0

 

 

 

Poetry는 기본적으로 PyPI에서 패키지 및 의존성을 찾는다. 다른 레포지토리를 이용해야 한다면, tool.poetry.repositories 부분을 다음과 같이 수정한다.

 

[tool.poetry.repositories]
name = "{repo name}"
url = "{repo url}"

 

 

4) 가상환경 설정하기

Poetry는 기본적으로 {cache-dir}/virtualenvs 디렉토리에 가상환경을 설정한다. cache-dir는 poetry config 명령어를 통해 임의로 설정할 수 있다. poetry config virtualenvs.in-project true로 설정하면 가상환경이 프로젝트 내에 위치하도록 할 수 있다.

poetry config virtualenvs.in-project true

 

 

가상환경에서 스크립트를 실행하려면 poetry run python script.py 명령어로 실행할 수 있다.

 

 

5) 가상환경 활성화하기

가상환경을 activate 하는 가장 쉬운 방법은 poetry shell을 이용하는 것이다. poetry shell 명령어는 새로운 쉘(shell)을 생성하게 된다. 이때 만들어진 쉘을 종료함과 동시에 가상환경을 deactivate 하려면 exit를 입력한다. shell을 종료하지 않고 가상환경만 나가려면 deactivate를 입력한다.

 

새 쉘을 생성하지 않으려면 `source {path_to_env}/bin/activate를 이용한다. ( Windows PowerShell 사용자는 {path_to_venv}\Scripts\activate.ps1 을 이용한다.) 가상환경의 경로는 poetry env info --path 명령어를 입력해서 확인할 수 있다. 

 

PowerShell의 경우, poetry shell 실행 시 다음과 같은 결과가 나온다.

 

Creating virtualenv poetry-test in {프로젝트 경로}\.venv
Spawning shell within {프로젝트 경로}\.venv
PowerShell 7.4.2
(poetry-test-py3.11) PS {프로젝트 경로}>

 

 

6) 의존성 설치하기

pyproject.toml에 기록된 의존성을 설치하기 위해서는 아래 명령어를 수행한다.

poetry install

 

poetry.lock이 없다면 poetry는 pyproject.toml에 기록된 의존성을 최신 버전으로 다운로드하고 설치한다. 설치가 끝나면 다운로드 받은 패키지들의 버전 정보를 이용하여 poetry.lock 파일을 생성한다. 해당 프로젝트를 사용하는 모든 사용자들이 같은 버전의 의존성을 사용할 수 있도록 poetry.lock 파일은 버전 관리 시스템(VC)를 이용할 때 commit 해야 한다.

 

 


참고한 자료 및 볼만한 자료

 

 

poetry 공식문서

https://blog.flynnpark.dev/15

 

Poetry로 파이썬 의존성 관리하기

Poetry? 파이썬에서 사용하는 의존성 관리자는 몇 가지가 있습니다. 파이썬의 공식 의존성 관리자인 pip, 그리고 pip와 virtualenv를 같이 사용할 수 있는 Pipenv가 있고, 이번에 소개할 Poetry가 있습니다.

blog.flynnpark.dev

https://velog.io/@whattsup_kim/Python-%ED%8C%8C%EC%9D%B4%EC%8D%AC-%ED%99%98%EA%B2%BD-%EA%B5%AC%EC%B6%95%ED%95%98%EA%B8%B0-2-Poetry#poetry-remove

 

[Python] 파이썬 환경 구축하기 (2) Poetry

Poetry로 파이썬 의존성을 관리해봅시다.

velog.io

https://python-poetry.org/docs/dependency-specification/

 

Dependency specification | Documentation | Poetry - Python dependency management and packaging made easy

With Poetry 1.2 releases, the default git client used is Dulwich. We fall back to legacy system git client implementation in cases where gitcredentials is used. This fallback will be removed in a future release where gitcredentials helpers can be better su

python-poetry.org

https://modulabs.co.kr/blog/python-env-poetry/

 

Python env와 Poetry를 이용한 가상환경 버전 관리

파이썬 개발 환경 구축에 대한 가이드를 소개해드립니다. 개발을 위해서는 가상환경과 버전 관리가 중요한데, 이를 위해 Python env와 Poetry를 사용하는 방법을 알려드릴게요. 이해하실 수 있도록

modulabs.co.kr

 

반응형