Python에서 Poetry로 패키지를 관리하는 방법을 정리합니다.
Poetry
Poetry는 파이썬 패키지 및 의존성을 관리해주는 도구이다.
Poetry 설치
Poetry 설치는 공식 홈페이지에 설명되어 있다.
1 2 3 4 5
| curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python
(Invoke-WebRequest -Uri https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py -UseBasicParsing).Content | python
|
새 프로젝트 생성
이제 본격적으로 프로젝트를 진행해보자. 먼저 아래의 명령어로 패키지 디렉토리 구조를 생성한다. 여기서는 tests
라는 이름의 패키지를 생성한다고 가정한다.
그러면 아래와 같은 구조의 디렉토리가 생성된다.
1 2 3 4 5 6 7
| total 8 drwxr-xr-x@ 6 ryu staff 192 3 7 23:46 . drwx------@ 46 ryu staff 1472 3 7 23:46 .. -rw-r--r-- 1 ryu staff 0 3 7 23:46 README.rst -rw-r--r-- 1 ryu staff 295 3 7 23:46 pyproject.toml drwxr-xr-x@ 3 ryu staff 96 3 7 23:46 test drwxr-xr-x@ 4 ryu staff 128 3 7 23:46 tests
|
그 다음 패키지 형상 관리를 위해서 Github을 사용하고자 한다. 그래서 해당 패키지의 레파지토리를 만들고 Git 주소를 연동해준다.
1 2 3 4 5 6 7 8
| git init
git remote add origin {깃허브 URL}
git commit -m "update"
git push origin main
|
이렇게 하면 패키지 작성 및 관리를 위한 준비가 끝났다.
pyproject.toml 작성
처음 생성된 pyproject.toml
파일에는 필수로 작성해야 하는 내용들이 포함되어 있으며, 그 양식은 아래와 같다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| [tool.poetry] name = "kbodata" version = "0.1.0" description = "" authors = ["Hyeonji-Ryu <dev.bearabbit@gmail.com>"]
[tool.poetry.dependencies] python = "^3.7"
[tool.poetry.dev-dependencies] pytest = "^5.2"
[build-system] requires = ["poetry-core>=1.0.0"] build-backend = "poetry.core.masonry.api"
|
이제 기본으로 생성된 데이터에서 패키지 필요조건에 맞게 수정하면 된다. 수정해야 할 부분은 크게 2가지이다.
tool.poetry |
패키지에 대한 기본 정보를 작성헌다. 기존 setup.py에 작성하던 라이센스, 관리자 정보, 레포 정보 등을 압력하면 된다. |
tool.poetry.dependencies |
해당 패키지가 의존하고 있는 다른 라이브러리들을 정리한다. 기존 requirement.txt와 동일하다. |
그렇게 패키징에 필요한 내용들을 추가한 pyproject.toml
은 아래와 같다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| [tool.poetry] name = "kbodata" version = "0.1.0" description = "Scraping Korea Baseball Game information" authors = ["Hyeonji-Ryu <dev.bearabbit@gmail.com>"] license = "MIT" readme = "README.md" repository = "https://github.com/Hyeonji-Ryu/kbo-data" documentation = "https://github.com/Hyeonji-Ryu/kbo-data/tree/main/docs"
[tool.poetry.dependencies] python = "^3.7.1" selenium = "^3.141.0" pandas = "^1.2.2" bs4 = "^0.0.1" lxml = "^4.6.2" requests = "^2.25.1"
[tool.poetry.dev-dependencies] pytest = "^5.2"
[build-system] requires = ["poetry-core>=1.0.0"] build-backend = "poetry.core.masonry.api"
|
PyPi에 업로드
PyPi에 업로드하기 위해서는 해당 사이트의 아이디와 비밀번호가 필요하다. 따라서 회원가입이 되어 있지 않다면 pypi.org에 가서 계정을 생성해야 한다.
그 다음 패키지로 올리는 프로젝트 디렉토리로 가서 아래의 코드를 입력한다.
그러면 PyPi 홈페이지의 아이디와 비밀번호를 입력하라고 한다. 이를 입력하고 나면 poetry는 내부의 소스코드를 확인하고 문제가 있는 부분에 대한 에러를 프린트 하거나 정상적으로 패키지를 업로드 해준다.
kbodata