Poetry
Python Dependecy Manager로 Python 프로젝트에 대한 모든 dependency를 선언, 관리, 설치하여 어디서나 프로젝트가 작동하도록 도와주는 툴입니다.
Poetry는 .toml 파일과 .lock 파일을 생성해 dependency를 관리합니다.
.toml 파일에는 프로젝트 dependency의 Metadata가,
.lock 파일에는 설치된 패키지들의 version, hash가 저장되어 있습니다.
Install
https://python-poetry.org/docs/#installing-with-the-official-installer
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
위 공식 문서에 따라 개발 환경에 맡게 설치하면 됩니다.
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 -
py : 'py' 용어가 cmdlet, 함수, 스크립트 파일 또는 실행할 수 있는 프로그램 이름으로 인식되지 않습니다. 이름이 정확한지
확인하고 경로가 포함된 경우 경로가 올바른지 검증한 다음 다시 시도하십시오.
위 에러 출력시 py를 python으로 변경합니다.
(Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | python -
윈도우의 경우 "C:\Users\[사용자]\AppData\Roaming\Python\Scripts" 경로를 환경변수에 등록합니다.
Check
poetry --version
실습
Poetry 프로젝트 생성
프로젝트 init
실습할 폴더를 생성 후 초기 세팅을 진행합니다.
mkdir test
cd test
poetry init

프로젝트 이름, 설명, 라이센스, Python 버전을 설정할 수 있습니다. (바로 작성하지 않고 엔터로 넘어간 뒤 후에 pyproject.toml 파일을 수정하여 설정할 수 있습니다.)

이후 위와같이 대화 형식으로 원하는 패키지를 설치 가능합니다.
여기서 Dependency는 프로덕션용, Development Dependency는 Dev용으로 개발 환경마다 필요한 패키지를 분리하여 설치하면 됩니다.
설정 확인
pyproject.toml 파일을 열어 설정한 정보를 확인하거나 수정할 수 있습니다.

프로젝트 new
poetry new test-fastapi
poetry add fastapi
Poetry Shell 활성화
poetry shell
만약, 가상환경 활성화 보안 오류가 뜬다면 다음 명령어를 입력 후 다시 활성화 합니다.
Set-ExecutionPolicy Unrestricted
Poetry 설치
pyproject.toml에 설정한 내용을 기반으로 패키지들을 설치합니다.
poetry install
프로젝트 내 .venv 설치
poetry config virtualenvs.in-project true
poetry config virtualenvs.path "./.venv"
poetry install && poetry update
패키지 추가 설치
다음 명령어를 통해 필요한 패키지를 추가로 설치합니다.
poetry add pandas
poetry.lock
여기 까지 진행했다면 poetry.lock 파일이 생성된 것을 확인할 수 있습니다.
이 파일을 가지고 동일한 의존성을 가진 새로운 프로젝트를 생성할 수 있습니다.
Simple Web Server
웹 서버 파일 생성
# test.py
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def test():
return {"Hello": "World"}
uvicorn 설치
poetry add uvicorn
Server 구동
# poetry shell 이 실행 되어 있는 경우
uvicorn test:app
# poetry shell 이 실행 되어 있지 않은 경우
poetry run uvicorn test:app
[참고]
Poetry로 Python 개발환경 만들기
개발 중 제일 어렵다는 개발환경 만들기. 대부분의 언어는 패키지 매니저가 존재합니다. 기본 내장 라이브러리 외에 사용자 라이브러리를 써야 할 일이 많기 때문이죠. 오늘은 파이썬의 패키지
mattpy.tistory.com
'Develop > Python' 카테고리의 다른 글
[Python] pytube로 Youtube 영상 처리 (0) | 2023.07.18 |
---|---|
[Python] pafy로 Youtube 영상 처리 (0) | 2023.07.10 |
[Python] nohup으로 .py 백그라운드 실행 (0) | 2023.06.08 |
[Python] 우선순위 큐 (Priority Queue) (0) | 2023.01.17 |
[Python] 분할정복 - 거듭제곱을 더 빠르게 계산하자 ! (0) | 2022.12.28 |