본문 바로가기

Python/etc

Poetry (python packaging tool)

반응형

Poetry 란?

개발 프로젝트를 할 때 사용했던 모든 것들을 Packaging 할 수 있도록 지원해 주는 Tool

 

예를 들어 django 프로젝트를 진행할때는 당연히 django를 설치해줘야 한다. 이때 일반적으로 설치를 하게 되면 개발하는 PC에 Global 하게 설치하게 되어 해당 프로젝트 외에 다른 것을 할 때 django의 다른 버전이 필요하다면 다시 setting을 해줘야 하는 번거로움이 발생하게 된다. 이때 Poetry 같은 Packaging Tool을 사용하게 되면 Poetry로 지정한 범위 내에서만 django를 사용하게 되어 해당 프로젝트 외에 다른 부분에서는 영향을 받지 않는다.

 

두 번째로는 프로젝트 간 사용했던 것들을 모두 Packaging 하여 배포할 때 용이하다.

 


1. 설치

 

- 윈도우 환경

파워쉘에서 명령어 실행
(Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | py -


* 윈도우환경에서 설치 후에 명령어 입력이 안되어 환경변수 추가 등록해 줌 (나만 그런건지 왜 그런 건지는 모르겠음)

 

- Linux 환경 (mac 포함)

curl -sSL https://install.python-poetry.org | python3 -

 

- 공식 홈페이지 설치 가이드
https://python-poetry.org/docs/#installation

 

Introduction | Documentation | Poetry - Python dependency management and packaging made easy

If you installed using the deprecated get-poetry.py script, you should remove the path it uses manually, e.g. rm -rf "${POETRY_HOME:-~/.poetry}" Also remove ~/.poetry/bin from your $PATH in your shell configuration, if it is present.

python-poetry.org

 

2. 사용 방법

 

- poetry 초기화

#poetry init

 

명령어를 입력하면 대화형으로 초기화하도록 묻는다.

This command will guide you through creating your pyproject.toml config.

Package name [airbnb-clone-backend]:
Version [0.1.0]:  
Description []:  
Author [None, n to skip]:  riverstack
License []:  MIT
Compatible Python versions [^3.10]:  

Would you like to define your main dependencies interactively? (yes/no) [yes] no
Would you like to define your development dependencies interactively? (yes/no) [yes] no

 

초기화가 완료되면 pyproject.toml 파일이 생성되고 그 안엔 위에 설정한 내용과 설치된 프로그램 등의 내용이 포함된다.

 

- poetry 에 LIB 설치
#poetry add [LIB 명]
EX) #poetry add django

 

poetry에 설치를 해야 한다. pip로 설치하게 되면 global 하게 적용되어 poetry를 사용하는 의미가 반감된다.

설치를 하고난 후에 pyproject.toml을 보면 해당 tool의 버전과 함께 내용이 추가된다.

 

- poetry 진입(?) 방법

#poetry shell

 

poetry 에 진입하는 방법은 위의 명령어를 입력해야 한다. poetry에 LIB 설치하고 그냥 import 시키면 아무리 해도 설치한 LIB을 사용할 수 없다. 꼭 poetry에 진입해서 사용해야 한다.

 

- poetry 탈출 방법

#exit

 

더 이상 poetry 사용을 안 한다면 exit 명령어로 poetry에서 나올 수 있다.

 

반응형