Poetry๋ ํ๋์ ์ธ Python ์ข ์์ฑ ๊ด๋ฆฌ ๋ฐ ํจํค์ง ๋๊ตฌ์ ๋๋ค. ์ด ๋๊ตฌ๊ฐ ์ ์ธ๊ณ ๊ฐ๋ฐ์๋ค์ ์ํด ํ๋ก์ ํธ๋ฅผ ์ด๋ป๊ฒ ๊ฐ์ํํ๋์ง ์์๋ณด์ธ์.
Poetry ์ข ์์ฑ ๊ด๋ฆฌ: ํ๋์ ์ธ Python ํจํค์ง ๊ด๋ฆฌ
๋ค์ฌ๋ค๋ฅํ๊ณ ๋๋ฆฌ ์ฌ์ฉ๋๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ธ Python์ ๋ฐฉ๋ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ ํจํค์ง ์ํ๊ณ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ฐ์ ํฉ๋๋ค. ์ด๋ฌํ ์ข ์์ฑ์ ํจ๊ณผ์ ์ผ๋ก ๊ด๋ฆฌํ๋ ๊ฒ์ ํ๋ก์ ํธ ์ฑ๊ณต์ ๋งค์ฐ ์ค์ํ๋ฉฐ, ๋ฐ๋ก ์ด ์ง์ ์์ Poetry์ ๊ฐ์ ๋๊ตฌ๊ฐ ๋ฑ์ฅํฉ๋๋ค. ์ด ๋ธ๋ก๊ทธ ๊ฒ์๋ฌผ์ ํ๋์ ์ธ Python ์ข ์์ฑ ๊ด๋ฆฌ ๋ฐ ํจํค์ง ๋๊ตฌ์ธ Poetry๋ฅผ ์ฌ์ธต์ ์ผ๋ก ํ๊ตฌํ๋ฉฐ, ๊ทธ ๊ธฐ๋ฅ, ์ด์ , ๊ทธ๋ฆฌ๊ณ ์ ์ธ๊ณ ๊ฐ๋ฐ์๋ค์ ์ํด Python ๊ฐ๋ฐ์ ์ด๋ป๊ฒ ๋จ์ํํ๋์ง ์ดํด๋ด ๋๋ค.
Python ์ข ์์ฑ ๊ด๋ฆฌ์ ๊ณผ์
Poetry์ ๋ฐ์ด๋ค๊ธฐ ์ ์, ์ ํต์ ์ธ Python ์ข
์์ฑ ๊ด๋ฆฌ์ ๊ณผ์ ๋ฅผ ์ดํดํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ์ญ์ฌ์ ์ผ๋ก ๊ฐ๋ฐ์๋ค์ ํจํค์ง ์ค์น๋ฅผ ์ํด pip
์, ํ๋ก์ ํธ ์ข
์์ฑ ๋ชฉ๋กํ๋ฅผ ์ํด requirements.txt
ํ์ผ์ ์์กดํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด ์ ๊ทผ ๋ฐฉ์์ ๋ค์๊ณผ ๊ฐ์ ์ด๋ ค์์ ์์ฃผ ์ด๋ํ์ต๋๋ค:
- ์ข ์์ฑ ์ถฉ๋: ์๋ก ๋ค๋ฅธ ํจํค์ง๊ฐ ๋์ผํ ์ข ์์ฑ์ ๋ค๋ฅธ ๋ฒ์ ์ ์๊ตฌํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์ด๋ฌํ ์ถฉ๋์ ์๋์ผ๋ก ๊ด๋ฆฌํ๋ ๊ฒ์ ์ง๋ฃจํ๊ณ ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ธฐ ์ฌ์ "์ข ์์ฑ ์ง์ฅ"๊ณผ ๊ฐ์ ๋ฌธ์ ๋ก ์ด์ด์ง ์ ์์ต๋๋ค.
- ์ฌํ์ฑ ๋ฌธ์ : ๋ค๋ฅธ ๊ธฐ๊ธฐ ๋ฐ ๊ฐ๋ฐ ๋จ๊ณ์์ ์ผ๊ด๋ ํ๊ฒฝ์ ์์ฑํ๋ ๊ฒ์ ์ด๋ ค์ธ ์ ์์ต๋๋ค.
virtualenv
์ ๊ฐ์ ๋๊ตฌ๊ฐ ๋์์ด ๋์์ง๋ง, ์ฌ์ ํ ์๋ ๊ด๋ฆฌ๊ฐ ํ์ํ์ต๋๋ค. - ํจํค์ง ๋ฐ ๋ฐฐํฌ ๋ณต์ก์ฑ: Python ํจํค์ง๋ฅผ PyPI(Python Package Index)์ ํจํค์งํ๊ณ ๋ฐฐํฌํ๋ ๊ฒ์ ์ ํต์ ์ผ๋ก
setup.py
๋๋setup.cfg
ํ์ผ ์ค์ ๋ฑ ์ฌ๋ฌ ์๋ ๋จ๊ณ๋ฅผ ํฌํจํ์ต๋๋ค. - ๋ฒ์ ๊ด๋ฆฌ์ ์ด๋ ค์: ํจํค์ง ๋ฒ์ ์ ์ ํํ๊ฒ ์ถ์ ํ๊ณ ๊ด๋ฆฌํ๋ ๊ฒ์ ๋ณต์กํ ์ ์์ผ๋ฉฐ, ์ ์ฌ์ ์ธ ํธํ์ฑ ๋ฌธ์ ๋ก ์ด์ด์ง ์ ์์ต๋๋ค.
์ด๋ฌํ ๊ณผ์ ๋ค์ Poetry๊ฐ ํด๊ฒฐํ๋ Python ์ข ์์ฑ ๊ด๋ฆฌ์ ๋ํ ๋์ฑ ๊ฒฌ๊ณ ํ๊ณ ๊ฐ์ํ๋ ์ ๊ทผ ๋ฐฉ์์ ํ์์ฑ์ ๊ฐ์กฐํฉ๋๋ค.
Poetry ์๊ฐ: ํ๋์ ์ธ ํด๊ฒฐ์ฑ
Poetry๋ ์ด๋ฌํ ๊ณผ์ ์ ๋ํ ํฌ๊ด์ ์ธ ํด๊ฒฐ์ฑ ์ ์ ๊ณตํ๋ ์ข ์์ฑ ๊ด๋ฆฌ ๋๊ตฌ์ ๋๋ค. ์ข ์์ฑ ํด๊ฒฐ, ๊ฐ์ ํ๊ฒฝ ๊ด๋ฆฌ, ํจํค์ง ๋น๋/๋ฐฐํฌ๋ฅผ ๋ชจ๋ ํ๋์ ๊ฐ์ํ๋ ์ํฌํ๋ก์ฐ๋ก ์ฒ๋ฆฌํฉ๋๋ค. ์ฃผ์ ๊ธฐ๋ฅ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ์ ์ธ์ ์ข
์์ฑ ๊ด๋ฆฌ: Poetry๋
pyproject.toml
ํ์ผ(PEP 518์ ์ํด ํ์คํ๋จ)์ ์ฌ์ฉํ์ฌ ํ๋ก์ ํธ ์ข ์์ฑ ๋ฐ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ ์ธํฉ๋๋ค. ์ด ํ์ผ์ ๋ชจ๋ ํ๋ก์ ํธ ๊ด๋ จ ์ ๋ณด์ ๋ํ ๋จ์ผ ์ง์ค ๊ณต๊ธ์ ์ญํ ์ ํฉ๋๋ค. - ์ข ์์ฑ ํด๊ฒฐ: Poetry์ ์ข ์์ฑ ํด๊ฒฐ๊ธฐ๋ ์ข ์์ฑ๊ณผ ๊ทธ ํ์ ์ข ์์ฑ์ ์ต์ ๋ฒ์ ์ ํจ์จ์ ์ผ๋ก ๊ฒฐ์ ํ์ฌ ํธํ์ฑ์ ๋ณด์ฅํฉ๋๋ค.
- ๊ฐ์ ํ๊ฒฝ ๊ด๋ฆฌ: Poetry๋ ๊ฐ ํ๋ก์ ํธ์ ๋ํ ๊ฐ์ ํ๊ฒฝ์ ์๋์ผ๋ก ๊ด๋ฆฌํ์ฌ ์ข ์์ฑ์ ๊ฒฉ๋ฆฌํ๊ณ ์ถฉ๋์ ๋ฐฉ์งํฉ๋๋ค.
- ํจํค์ง ๋ฐ ๋ฐฐํฌ: Poetry๋ Python ํจํค์ง๋ฅผ PyPI ๋๋ ๊ธฐํ ํจํค์ง ์ ์ฅ์์ ๋น๋ํ๊ณ ๋ฐฐํฌํ๋ ๊ณผ์ ์ ๊ฐ์ํํฉ๋๋ค.
- ์ ๊ธ ํ์ผ: Poetry๋ ์ค์น๋ ๋ชจ๋ ์ข
์์ฑ์ ์ ํํ ๋ฒ์ ์ ๋ช
์์ ์ผ๋ก ๋์ดํ๋
poetry.lock
ํ์ผ์ ์์ฑํฉ๋๋ค. ์ด ํ์ผ์ ๋ค๋ฅธ ํ๊ฒฝ ๊ฐ์ ์ฌํ์ฑ์ ๋ณด์ฅํ๊ณ ์๊ธฐ์น ์์ ๋ฒ์ ์ ๋ฐ์ดํธ๋ฅผ ๋ฐฉ์งํฉ๋๋ค. - ๊ฐ์ํ๋ ๋ช ๋ น์ด: Poetry๋ ์ข ์์ฑ ๊ด๋ฆฌ, ํ ์คํธ ์คํ ๋ฐ ํจํค์ง ๋น๋๋ฅผ ์ํ ์ง๊ด์ ์ธ ๋ช ๋ น์ด๋ฅผ ๊ฐ์ถ ์ฌ์ฉ์ ์นํ์ ์ธ ๋ช ๋ น์ค ์ธํฐํ์ด์ค(CLI)๋ฅผ ์ ๊ณตํฉ๋๋ค.
Poetry ์์ํ๊ธฐ
Poetry ์ค์น๋ ๊ฐ๋จํฉ๋๋ค. Python ํจํค์ง ์ค์น ๋๊ตฌ์ธ pip
๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๊ด๋ฆฌ์ ๊ถํ์ด ํ์ํ๊ฑฐ๋ ์์คํ
ํจํค์ง์์ ์ถฉ๋์ ๋ฐฉ์งํ๊ธฐ ์ํด Poetry๋ฅผ ์ฌ์ฉ์ ํ๊ฒฝ์ ์ค์นํ๋ ๊ฒ์ด ์ผ๋ฐ์ ์ผ๋ก ๊ถ์ฅ๋ฉ๋๋ค.
pip install poetry
์ค์น ํ, Poetry ๋ฒ์ ํ์ธ์ ํตํด ์ฌ๋ฐ๋ฅด๊ฒ ์ค์น๋์๋์ง ํ์ธํ์ญ์์ค:
poetry --version
์ด ๋ช ๋ น์ด๋ ์ค์น๋ Poetry ๋ฒ์ ์ ์ถ๋ ฅํ์ฌ ์ ์ ์๋ํจ์ ํ์ธ์์ผ ์ค๋๋ค. ์ถ๋ ฅ์ ๋ค์๊ณผ ๊ฐ์ ์ ์์ต๋๋ค:
Poetry (version 1.7.0)
์ ํ๋ก์ ํธ ์์ฑ
Poetry๋ฅผ ์ฌ์ฉํ์ฌ ์ Python ํ๋ก์ ํธ๋ฅผ ์์ฑํ๋ ค๋ฉด, ์ํ๋ ๋๋ ํ ๋ฆฌ๋ก ์ด๋ํ์ฌ ๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํ์ญ์์ค:
poetry new my-project
์ด ๋ช
๋ น์ด๋ my-project
๋ผ๋ ์ ๋๋ ํ ๋ฆฌ๋ฅผ ์์ฑํ๊ณ , pyproject.toml
ํ์ผ, poetry.lock
ํ์ผ, ๊ทธ๋ฆฌ๊ณ ํ๋ก์ ํธ์ ๊ธฐ๋ณธ ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ(์: ์์ค ์ฝ๋๋ฅผ ํฌํจํ๋ src
๋๋ ํ ๋ฆฌ, ๋๋ ํจํค์ง๋ฅผ ํฌํจํ๋ my_project
๋๋ ํ ๋ฆฌ)๋ฅผ ๊ฐ์ง ์ Python ํ๋ก์ ํธ๋ฅผ ์ด๊ธฐํํฉ๋๋ค. ํจํค์ง ์ด๋ฆ์ผ๋ก ๋ช
๋ช
๋์ง ์์ ํ๋ก์ ํธ์ ๊ฒฝ์ฐ, Poetry๋ src
๋๋ ํ ๋ฆฌ๋ฅผ ์๋์ผ๋ก ์์ฑํ์ง ์๊ณ , ํ๋ก์ ํธ์ ๋์ผํ ์ด๋ฆ์ ๊ฐ์ง ํจํค์ง๋ฅผ ์์ฑํฉ๋๋ค. pyproject.toml
ํ์ผ์๋ ํ๋ก์ ํธ ์ด๋ฆ, ๋ฒ์ ๋ฐ Python ๋ฒ์ ์ ์ฝ ์กฐ๊ฑด๊ณผ ๊ฐ์ ๊ธฐ๋ณธ ํ๋ก์ ํธ ์ ๋ณด๊ฐ ํฌํจ๋ฉ๋๋ค.
์ข ์์ฑ ์ถ๊ฐ
Poetry๋ฅผ ์ฌ์ฉํ๋ฉด ์ข
์์ฑ ์ถ๊ฐ๊ฐ ๊ฐ๋จํฉ๋๋ค. package-name
์ ์ค์นํ๋ ค๋ ํจํค์ง ์ด๋ฆ์ผ๋ก ๋ฐ๊ฟ ๋ค์ ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ญ์์ค:
poetry add package-name
์๋ฅผ ๋ค์ด, ์ธ๊ธฐ ์๋ requests ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ค์นํ๋ ค๋ฉด ๋ค์์ ์คํํ์ญ์์ค:
poetry add requests
Poetry๋ ์ข
์์ฑ์ ์๋์ผ๋ก ํด๊ฒฐํ๊ณ , ํ๋ก์ ํธ์ ๊ฐ์ ํ๊ฒฝ ๋ด์ ํจํค์ง๋ฅผ ์ค์นํ๋ฉฐ, pyproject.toml
๋ฐ poetry.lock
ํ์ผ์ ์
๋ฐ์ดํธํฉ๋๋ค.
์ข ์์ฑ ์ค์น
pyproject.toml
ํ์ผ์ ์ ์๋ ๋ชจ๋ ์ข
์์ฑ์ ์ค์นํ๋ ค๋ฉด, ํ๋ก์ ํธ ๋๋ ํ ๋ฆฌ๋ก ์ด๋ํ์ฌ ๋ค์์ ์คํํ์ญ์์ค:
poetry install
์ด ๋ช
๋ น์ด๋ pyproject.toml
์ ๋์ด๋ ๋ชจ๋ ์ข
์์ฑ์ ์ค์นํ๊ณ poetry.lock
ํ์ผ์ ์์ฑํ๊ฑฐ๋ ์
๋ฐ์ดํธํฉ๋๋ค.
๊ฐ์ ํ๊ฒฝ ๋ด์์ ๋ช ๋ น์ด ์คํ
ํ๋ก์ ํธ์ ๊ฐ์ ํ๊ฒฝ ๋ด์์ ๋ช
๋ น์ด๋ฅผ ์คํํ๋ ค๋ฉด poetry run
๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ญ์์ค. ์๋ฅผ ๋ค์ด:
poetry run python my_script.py
์ด ๋ช
๋ น์ด๋ ํ๋ก์ ํธ์ ๊ฐ์ ํ๊ฒฝ ๋ด์์ Python ์คํฌ๋ฆฝํธ(my_script.py
)๋ฅผ ์คํํ์ฌ, ์ค์น๋ ์ข
์์ฑ์ ์ ๊ทผํ ์ ์๋๋ก ๋ณด์ฅํฉ๋๋ค.
Poetry ํ๋ก์ ํธ์ ์ฃผ์ ํ์ผ
Poetry ํ๋ก์ ํธ์ ์ฃผ์ ํ์ผ์ ์ดํดํ๋ ๊ฒ์ ํจ๊ณผ์ ์ธ ๊ด๋ฆฌ๋ฅผ ์ํด ์ค์ํฉ๋๋ค:
pyproject.toml
: ์ด ํ์ผ์ Poetry ํ๋ก์ ํธ์ ํต์ฌ์ ๋๋ค. ํ๋ก์ ํธ ๋ฉํ๋ฐ์ดํฐ(์ด๋ฆ, ๋ฒ์ , ์ ์, ์ค๋ช ๋ฑ)์ ์ข ์์ฑ ๋ฐ ๊ทธ ๋ฒ์ ๋ชฉ๋ก์ ํฌํจํฉ๋๋ค. ์ด ํ์ผ์ TOML(Tom's Obvious, Minimal Language) ํ์์ ์ฌ์ฉํฉ๋๋ค.poetry.lock
: ์ด ํ์ผ์ ์ ๊ธ ํ์ผ ์ญํ ์ ํฉ๋๋ค. ์ค์น๋ ๋ชจ๋ ์ข ์์ฑ๊ณผ ๊ทธ ํ์ ์ข ์์ฑ์ ์ ํํ ๋ฒ์ ์ ๋์ดํฉ๋๋ค. ์ ๊ธ ํ์ผ์ ํ๋ก์ ํธ์ ์ฐธ์ฌํ๋ ๋ชจ๋ ๊ฐ๋ฐ์ ๋๋ ํ๋ก์ ํธ๋ฅผ ์คํํ๋ ๋จธ์ ์ด ๋์ผํ ์ข ์์ฑ ๋ฒ์ ์ ์ฌ์ฉํ๋๋ก ๋ณด์ฅํ์ฌ ๋ชจ๋ ํ๊ฒฝ์์ ํ๋ก์ ํธ๋ฅผ ์ผ๊ด๋๊ณ ์ฌํ ๊ฐ๋ฅํ๊ฒ ๋ง๋ญ๋๋ค.- ๊ฐ์ ํ๊ฒฝ ๋๋ ํ ๋ฆฌ: Poetry๋ ๊ฐ ํ๋ก์ ํธ์ ๋ํ ๊ฐ์ ํ๊ฒฝ์ ์์ฑํ๊ณ ๊ด๋ฆฌํ๋ฉฐ, ์ผ๋ฐ์ ์ผ๋ก ํ๋ก์ ํธ ๋๋ ํ ๋ฆฌ ๋ด์
.venv
(๊ธฐ๋ณธ๊ฐ์ด๋ฉฐ, ๊ตฌ์ฑ ๊ฐ๋ฅ)์ ์์นํฉ๋๋ค. ์ด ๋๋ ํ ๋ฆฌ๋ ํ๋ก์ ํธ ์ข ์์ฑ์ ์์คํ ์ ์ฒด Python ์ค์น์ ๊ฒฉ๋ฆฌํฉ๋๋ค.
Poetry๋ฅผ ์ด์ฉํ ์ข ์์ฑ ๊ด๋ฆฌ: ์ค์ฉ์ ์ธ ์์
Poetry๋ฅผ ์ฌ์ฉํ์ฌ ์ข ์์ฑ์ ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํ๊ธฐ ์ํด ๋ช ๊ฐ์ง ์ค์ฉ์ ์ธ ์์ ๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
ํน์ ๋ฒ์ ์ ํจํค์ง ์ถ๊ฐ
ํน์ ๋ฒ์ ์ ํจํค์ง๋ฅผ ์ง์ ํ๋ ค๋ฉด poetry add
๋ช
๋ น์ด์ ๋ฒ์ ์ ์ฝ ์กฐ๊ฑด์ ํฌํจํ์ญ์์ค. ์๋ฅผ ๋ค์ด, requests ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฒ์ 2.2.1์ ์ค์นํ๋ ค๋ฉด ๋ค์์ ์ฌ์ฉํ์ญ์์ค:
poetry add requests==2.2.1
์ด ๋ช
๋ น์ด๋ ์ง์ ๋ ์ ํํ ๋ฒ์ ์ ์ค์นํ๊ณ pyproject.toml
๋ฐ poetry.lock
์ ๋ชจ๋ ์
๋ฐ์ดํธํฉ๋๋ค.
๊ฐ๋ฐ ๋๋ ํ ์คํธ์ฉ ํจํค์ง ์ถ๊ฐ
Poetry๋ฅผ ์ฌ์ฉํ๋ฉด pytest์ ๊ฐ์ ํ
์คํธ ํ๋ ์์ํฌ๋ flake8๊ณผ ๊ฐ์ ๋ฆฐํฐ์ฒ๋ผ ๊ฐ๋ฐ ๋๋ ํ
์คํธ ์ค์๋ง ํ์ํ ์ข
์์ฑ์ ์ง์ ํ ์ ์์ต๋๋ค. ๊ฐ๋ฐ ์ข
์์ฑ์ผ๋ก ํจํค์ง๋ฅผ ์ถ๊ฐํ๋ ค๋ฉด --group
ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ์ญ์์ค:
poetry add pytest --group dev
์ด ๋ช ๋ น์ด๋ pytest๋ฅผ ๊ฐ๋ฐ ํ๊ฒฝ์๋ง ํฌํจํ๋ฉฐ, ํ๋ก์ ํธ๋ฅผ ๋ฐฐํฌํ ๋ ํจํค์ง๋์ง ์์ต๋๋ค. ํ ์คํธ, ๋ฌธ์ ๋ฑ๊ณผ ๊ฐ์ด ๋ค์ํ ๊ฐ๋ฐ ๋๋ ํ ์คํธ ์๊ตฌ์ฌํญ์ ๋ฐ๋ผ ๋ค๋ฅธ ๊ทธ๋ฃน์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด, ํ ์คํธ๋ฅผ ์ํ ์ข ์์ฑ์ด ํ์ํ ๊ฒฝ์ฐ "test" ๊ทธ๋ฃน์ ์ถ๊ฐํ ์ ์์ต๋๋ค:
poetry add pytest --group test
poetry add coverage --group test
๊ทธ๋ฐ ๋ค์, ํ ์คํธ๋ฅผ ์คํํ ๋ ๋จผ์ ๊ฐ์ ํ๊ฒฝ์ ํ์ฑํํ๊ณ , ๋ค๋ฅธ Python ํ๋ก์ ํธ์์์ ๋ง์ฐฌ๊ฐ์ง๋ก ํ์์ ๋ฐ๋ผ ํ ์คํธ๋ฅผ ์คํํฉ๋๋ค. ์ด๋ ์ข ์ข CI/CD ํ์ดํ๋ผ์ธ์ด๋ ํ ์คํธ ์ ์ฐจ์ ๊ฐ์ ์คํฌ๋ฆฝํธ์์ ์ฒ๋ฆฌ๋ฉ๋๋ค.
์ข ์์ฑ ์ ๋ฐ์ดํธ
์ข ์์ฑ์ ์ต์ ํธํ ๋ฒ์ ์ผ๋ก ์ ๋ฐ์ดํธํ๋ ค๋ฉด ๋ค์์ ์คํํ์ญ์์ค:
poetry update
์ด ๋ช
๋ น์ด๋ ์ข
์์ฑ์ ํด๊ฒฐํ๊ณ pyproject.toml
๋ฐ poetry.lock
์ ์
๋ฐ์ดํธํฉ๋๋ค.
๋๋ ํน์ ํจํค์ง๋ฅผ ์ ๋ฐ์ดํธํ ์ ์์ต๋๋ค:
poetry update requests
์ข ์์ฑ ์ ๊ฑฐ
ํจํค์ง๋ฅผ ์ ๊ฑฐํ๋ ค๋ฉด poetry remove
๋ช
๋ น์ด ๋ค์ ํจํค์ง ์ด๋ฆ์ ์ฌ์ฉํ์ญ์์ค:
poetry remove requests
์ด ๋ช
๋ น์ด๋ ํ๋ก์ ํธ์์ ํจํค์ง๋ฅผ ์ ๊ฑฐํ๊ณ pyproject.toml
๋ฐ poetry.lock
ํ์ผ์ ์
๋ฐ์ดํธํฉ๋๋ค.
Poetry๋ก Python ํจํค์ง ๋น๋ ๋ฐ ๋ฐฐํฌ
Poetry๋ Python ํจํค์ง๋ฅผ ๋น๋ํ๊ณ ๋ฐฐํฌํ๋ ๊ณผ์ ์ ๊ฐ์ํํฉ๋๋ค. ๊ด๋ จ ๋จ๊ณ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
ํจํค์ง ๋น๋
ํจํค์ง๋ฅผ ๋น๋ํ๋ ค๋ฉด ๋ค์ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ญ์์ค:
poetry build
์ด ๋ช
๋ น์ด๋ dist
๋๋ ํ ๋ฆฌ์ ๋ฐฐํฌ ๊ฐ๋ฅํ ์์นด์ด๋ธ(.tar.gz
ํ์ผ ๋ฐ .whl
ํ์ผ)๋ฅผ ์์ฑํฉ๋๋ค. ์ด ํ์ผ๋ค์ ํจํค์ง์ ์์ค ์ฝ๋์ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ํฌํจํ๋ฉฐ ๋ฐฐํฌ ์ค๋น๊ฐ ์๋ฃ๋ฉ๋๋ค.
PyPI์ ํจํค์ง ๋ฐฐํฌ
PyPI์ ๋ฐฐํฌํ๊ธฐ ์ ์, PyPI ์๊ฒฉ ์ฆ๋ช (์ฌ์ฉ์ ์ด๋ฆ ๋ฐ ๋น๋ฐ๋ฒํธ)์ ๋ฑ๋กํ๊ณ ์ค์ ํด์ผ ํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ๋ค์์ ์คํํ์ญ์์ค:
poetry publish
Poetry๋ PyPI ์ฌ์ฉ์ ์ด๋ฆ๊ณผ ๋น๋ฐ๋ฒํธ๋ฅผ ์์ฒญํ ๋ค์, ํจํค์ง๋ฅผ PyPI์ ์ ๋ก๋ํฉ๋๋ค. PyPI API ํ ํฐ์ ์ค์ ํด์ผ ํ ์๋ ์์ต๋๋ค.
๋๋ ํ๋ก์ ํธ๋ฅผ ๋น๊ณต๊ฐ ํจํค์ง ์๋ฒ์ ๊ฐ์ ์ฌ์ฉ์ ์ง์ ์ ์ฅ์์ ๋ฐฐํฌํ ์ ์์ต๋๋ค. --repository
์ต์
์ผ๋ก ์ ์ฅ์๋ฅผ ์ง์ ํ ์ ์์ต๋๋ค:
poetry publish --repository my-private-repo
Poetry ์ฌ์ฉ์ ์ด์
Poetry๋ Python ๊ฐ๋ฐ์์๊ฒ ์๋ง์ ์ด์ ์ ์ ๊ณตํฉ๋๋ค:
- ๊ฐ์ํ๋ ์ข ์์ฑ ๊ด๋ฆฌ: Poetry๋ ์ข ์์ฑ ํด๊ฒฐ, ๋ฒ์ ๊ด๋ฆฌ, ๊ฐ์ ํ๊ฒฝ ๊ด๋ฆฌ๋ฅผ ๋จ์ํํฉ๋๋ค.
- ์ฌํ์ฑ:
poetry.lock
ํ์ผ์ ๋ชจ๋ ๊ฐ๋ฐ์์ ํ๊ฒฝ์ด ์ ํํ ๋์ผํ ํจํค์ง ๋ฒ์ ์ ์ฌ์ฉํ๋๋ก ๋ณด์ฅํ์ฌ ๋ฐฐํฌ์ ์ ๋ขฐ์ฑ์ ๋์ ๋๋ค. - ์ฌ์ฉ ํธ์์ฑ: CLI๋ ์ง๊ด์ ์ด๋ฉฐ Python ํจํค์ง ๊ด๋ฆฌ๊ฐ ์ฒ์์ธ ๊ฐ๋ฐ์๋ ์ฝ๊ฒ ๋ฐฐ์ธ ์ ์์ต๋๋ค.
- ๊ฐ์ํ๋ ํจํค์ง ๋ฐ ๋ฐฐํฌ: Poetry๋ PyPI์ ํจํค์ง๋ฅผ ๋น๋ํ๊ณ ๋ฐฐํฌํ๋ ๊ณผ์ ์ ๋จ์ํํฉ๋๋ค.
- ํฅ์๋ ํ๋ก์ ํธ ๊ตฌ์กฐ: Poetry๋ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ์ฅ๋ คํ๋ ์ ์ ์๋ ํ๋ก์ ํธ ๊ตฌ์กฐ๋ฅผ ์ด์งํฉ๋๋ค.
- ์ข ์์ฑ ๊ฒฉ๋ฆฌ: Poetry์ ๊ฐ์ ํ๊ฒฝ ์ฒ๋ฆฌ๋ ์์คํ ํจํค์ง ๋ฐ ๋ค๋ฅธ ํ๋ก์ ํธ์์ ์ถฉ๋์ ๋ฐฉ์งํฉ๋๋ค.
- ๋จ์ผ ์ง์ค ๊ณต๊ธ์:
pyproject.toml
ํ์ผ์ ํ๋ก์ ํธ, ๋ฉํ๋ฐ์ดํฐ ๋ฐ ์ข ์์ฑ์ ๊ตฌ์ฑํ๋ ๋จ์ผ ์ฅ์ ์ญํ ์ ํฉ๋๋ค. - ์ข ์์ฑ ์ง์ฅ ๊ฐ์: Poetry๋ ์ข ์์ฑ ์ถฉ๋์ ์๋์ผ๋ก ํด๊ฒฐํ์ฌ ์ข ์์ฑ ๊ด๋ฆฌ๋ฅผ ๋ ์ฝ๊ฒ ๋ง๋ญ๋๋ค.
์ ์ธ๊ณ์ ์ํฅ ๋ฐ ์ฑํ
Poetry์ ์ฌ์ฉ์ ์นํ์ ์ธ ๋์์ธ๊ณผ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ ์ธํธ๋ ์ ์ธ๊ณ Python ๊ฐ๋ฐ์๋ค ์ฌ์ด์์ ์ธ๊ธฐ๊ฐ ๋์์ง๋ ๋ฐ ๊ธฐ์ฌํ์ต๋๋ค. ํฌ๊ณ ์์ ๋ง์ Python ๊ฐ๋ฐ์๋ค์๊ฒ ํ์ค ๋๊ตฌ๊ฐ ๋์์ต๋๋ค. ํจํค์ง๋ฅผ ์ฝ๊ฒ ๊ด๋ฆฌํ๊ณ ๋ฐฐํฌํ๋ ๊ธฐ๋ฅ์ ๋ค์์ ํฌํจํ๋ ์ด์ ๊ตญํ๋์ง ์๋ ๋ค์ํ ์ง์ญ์ ๊ฐ๋ฐ์๋ค์๊ฒ ์ด์ ์ ์ ๊ณตํฉ๋๋ค:
- ๋ถ๋ฏธ: ๋ฏธ๊ตญ, ์บ๋๋ค, ๋ฉ์์ฝ์ ๊ธฐ์ ๊ณผ ์คํ์์ค ๊ฐ๋ฐ์๋ค์ด ๋ชจ๋ ๊ท๋ชจ์ ํ๋ก์ ํธ์ Poetry๋ฅผ ์ฑํํ์ต๋๋ค.
- ์ ๋ฝ: ์ ๋ฝ ์ฐํฉ, ์๊ตญ ๋ฐ ๊ธฐํ ์ ๋ฝ ๊ตญ๊ฐ์ ๊ฐ๋ฐ์๋ค์ด ์ข ์์ฑ ๊ด๋ฆฌ ๋ฐ Python ํจํค์ง ๋น๋๋ฅผ ์ํด Poetry๋ฅผ ์ฌ์ฉํฉ๋๋ค.
- ์์์: ์ธ๋์์ ์ผ๋ณธ, ๊ทธ๋ฆฌ๊ณ ๋๋จ์์์ ์ ์ญ์ ๊ฑธ์ณ ๊ธฐ์ , ์ ๋ถ ๊ธฐ๊ด ๋ฐ ๊ฐ๋ณ ๊ฐ๋ฐ์๋ค์ด Poetry๋ฅผ ์ฌ์ฉํ์ฌ ์ข ์์ฑ์ ํจ๊ณผ์ ์ผ๋ก ๊ด๋ฆฌํ๊ณ ์์ต๋๋ค.
- ๋จ๋ฏธ: ๋ธ๋ผ์ง, ์๋ฅดํจํฐ๋, ์ฝ๋กฌ๋น์์ ๊ฐ์ ๊ตญ๊ฐ์ ๊ฐ๋ฐ์๋ค์ด Poetry๋ฅผ ์์ฉํ๊ณ ์์ต๋๋ค.
- ์ํ๋ฆฌ์นด: ์ํ๋ฆฌ์นด ๊ตญ๊ฐ์ ์ ์ ๋ ๋ง์ ๊ฐ๋ฐ์๋ค์ด Poetry๋ฅผ ์ฌ์ฉํ๊ณ ์์ผ๋ฉฐ, ์ด๋ Poetry์ ์ ์ธ๊ณ์ ์ธ ํ์ฅ์ ๋์ฑ ์ฆ๋ช ํฉ๋๋ค.
- ํธ์ฃผ ๋ฐ ๋ด์ง๋๋: ํธ์ฃผ ๋ฐ ๋ด์ง๋๋์ Python ๊ฐ๋ฐ์๋ค๋ Poetry๊ฐ ์ํฌํ๋ก์ฐ๋ฅผ ๊ฐ์ํํ๋ ๋ฅ๋ ฅ์ผ๋ก๋ถํฐ ์ด์ ์ ์ป๊ณ ์์ต๋๋ค.
๋ค์ํ ๋๋ฅ์ ๊ฑธ์น Poetry์ ์ฑํ์ ๊ทธ ๋ค์ฉ์ฑ, ์ฌ์ฉ ํธ์์ฑ, ๊ทธ๋ฆฌ๊ณ Python ๊ฐ๋ฐ์ ์ผ๋ฐ์ ์ธ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฅ๋ ฅ์ ๋ฐ์ํฉ๋๋ค. ์ด๋ฌํ ์ ์ธ๊ณ์ ์ฑํ์ ์ฌํ์ฑ, ๊ฐ์ํ๋ ํ๋ก์ ํธ ์ค์ , ํจ์จ์ ์ธ ์ข ์์ฑ ๊ด๋ฆฌ์ ๋ํ ํ์์ฑ์ ์ํด ์ฃผ๋๋ฉ๋๋ค.
Poetry ์ฌ์ฉ์ ์ํ ๋ชจ๋ฒ ์ฌ๋ก ๋ฐ ํ
Poetry์ ์ด์ ์ ๊ทน๋ํํ๋ ค๋ฉด ๋ค์ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๊ณ ๋ คํ์ญ์์ค:
pyproject.toml
๋ฐpoetry.lock
์ปค๋ฐ: ํ๊ฒฝ ๊ฐ ์ผ๊ด์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํด ํญ์pyproject.toml
๋ฐpoetry.lock
ํ์ผ์ ๋ฒ์ ๊ด๋ฆฌ ์์คํ (์: Git)์ ์ปค๋ฐํ์ญ์์ค.- ๊ฐ์ ํ๊ฒฝ ์ฌ์ฉ: ํ๋ก์ ํธ ์ข ์์ฑ์ ๊ฒฉ๋ฆฌํ๊ธฐ ์ํด ํญ์ Poetry ๊ด๋ฆฌ ๊ฐ์ ํ๊ฒฝ ๋ด์์ ์์ ํ์ญ์์ค.
- ์ ๊ธฐ์ ์ธ ์ข
์์ฑ ์
๋ฐ์ดํธ:
poetry update
๋ฅผ ์ฃผ๊ธฐ์ ์ผ๋ก ์คํํ์ฌ ์ข ์์ฑ์ ์ต์ ์ํ๋ก ์ ์งํ๊ณ , ๋ณ๊ฒฝ ์ฌํญ์ ์ฃผ์ํ์ญ์์ค. - ์ฒ ์ ํ ํ ์คํธ: ํธํ์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํด ์ข ์์ฑ์ ์ ๋ฐ์ดํธํ ํ ํ๋ก์ ํธ๋ฅผ ์ฒ ์ ํ ํ ์คํธํ์ญ์์ค.
- ๋ฒ์ ์ ์ฝ ์กฐ๊ฑด ์ง์ : ์ค์น๋ฅผ ํ์ฉํ ํจํค์ง ๋ฒ์ ์ ์ ์ดํ๊ธฐ ์ํด
pyproject.toml
ํ์ผ์ ์ ์ ํ ๋ฒ์ ์ ์ฝ ์กฐ๊ฑด์ ์ฌ์ฉํ์ญ์์ค. - ์ข
์์ฑ ๊ทธ๋ฃน ์ดํด: ๊ฐ๋ฐ/ํ
์คํธ์ ํ์ํ ์ข
์์ฑ๊ณผ ๋ฐํ์ ํ๊ฒฝ์ ํ์ํ ์ข
์์ฑ์ ๋ถ๋ฆฌํ๊ธฐ ์ํด ์ข
์์ฑ ๊ทธ๋ฃน(์:
dev
,test
)์ ํ์ฉํ์ญ์์ค. - Poetry ๋ช
๋ น์ด ํ์ฉ: ์ํฌํ๋ก์ฐ๋ฅผ ๊ฐ์ํํ๊ธฐ ์ํด Poetry ๋ช
๋ น์ด(์:
poetry add
,poetry remove
,poetry run
,poetry build
,poetry publish
)์ ์ ์ฒด ๋ฒ์๋ฅผ ์์งํ์ญ์์ค. - ์๋งจํฑ ๋ฒ์ ๋(SemVer) ์ฌ์ฉ: ์ข ์์ฑ ๊ด๋ฆฌ๋ฅผ ๋๊ณ ํ๋ก์ ํธ ๋ด์์ ์ข์ ๊ดํ์ ์ฅ๋ คํ๊ธฐ ์ํด SemVer(์๋งจํฑ ๋ฒ์ ๋) ์ง์นจ์ ๋ฐ๋ฅด์ญ์์ค.
- ๋ณด์ ์ทจ์ฝ์ ํ์ธ: ํนํ ๊ณต๊ฐ์ ์ผ๋ก ์ฌ์ฉ ๊ฐ๋ฅํ๊ฑฐ๋ ๋ฏผ๊ฐํ ๋ฐ์ดํฐ์ ํจ๊ป ์๋ํ๋ ํ๋ก์ ํธ์ ๊ฒฝ์ฐ, ์ข ์์ฑ์ ๋ณด์ ์ทจ์ฝ์ ์ ํ์ธํ๋ ๋๊ตฌ ๋๋ ๊ดํ์ ํตํฉํ๋ ๊ฒ์ ๊ณ ๋ คํ์ญ์์ค.
๋ค๋ฅธ Python ์ข ์์ฑ ๊ด๋ฆฌ์์์ ๋น๊ต
pip
๊ณผ virtualenv
๋ Python ๊ฐ๋ฐ์ ๊ธฐ๋ณธ ๋๊ตฌ์ด์ง๋ง, Poetry๋ ์ข
์์ฑ ๊ด๋ฆฌ ๋ฐ ํจํค์ง์ ์๋นํ ์ด์ ์ ์ ๊ณตํฉ๋๋ค. ๋ค์์ ๋น๊ต์
๋๋ค:
๊ธฐ๋ฅ | Poetry | pip + virtualenv |
---|---|---|
์ข ์์ฑ ํด๊ฒฐ | ์ (๊ณ ๊ธ ํด๊ฒฐ๊ธฐ) | ์๋์ (์๋ ๊ด๋ฆฌ ํ์) |
๊ฐ์ ํ๊ฒฝ ๊ด๋ฆฌ | ์๋ | ์๋ (virtualenv ๋ฅผ ํตํด) |
์ข ์์ฑ ์ ์ธ | pyproject.toml |
requirements.txt (๋ ๊ตฌ์กฐํ๋จ) |
์ ๊ธ ํ์ผ | ์ (poetry.lock ) |
์๋์ (์๋ ์์ฑ ํ์) |
ํจํค์ง ๋ฐ ๋ฐฐํฌ | ํตํฉ๋จ | ์๋ (setup.py ๋ฑ์ ํตํด) |
์ฌ์ฉ ํธ์์ฑ | ๋์ (์ง๊ด์ ์ธ CLI) | ์ค๊ฐ (๋ ๋ง์ ์๋ ๋จ๊ณ) |
Pip ๋ฐ virtualenv์ ๋น๊ตํ์ฌ, Poetry๋ ํนํ ๋๊ท๋ชจ ํ๋ก์ ํธ์ ๋ํด ํจ์ฌ ๋ ํตํฉ๋๊ณ ๊ฐ์ํ๋ ๊ฐ๋ฐ ๊ฒฝํ์ ์ ๊ณตํ๋ฉฐ, ํ๋ก์ ํธ ์ข ์์ฑ์ ๋ํ ๋จ์ผ ์ง์ค ๊ณต๊ธ์์ ์ ๊ณตํฉ๋๋ค. Pip์ด ๊ธฐ๋ณธ ํจํค์ง ๊ด๋ฆฌ์์ธ ๋ฐ๋ฉด, Poetry์ ์ข ์์ฑ ๊ด๋ฆฌ ๋ฐ ํจํค์ง ๊ธฐ๋ฅ์ ์๋ฒฝํ ์๋ฃจ์ ์ ์ ๊ณตํฉ๋๋ค.
๊ฒฐ๋ก : Poetry๋ก ํ๋์ ์ธ Python ๊ฐ๋ฐ์ ์์ฉํ์ธ์
Poetry๋ ํ๋ก์ ํธ ์ค์ , ์ข ์์ฑ ํด๊ฒฐ ๋ฐ ํจํค์ง ๋น๋๋ฅผ ๋จ์ํํ๋ ํฌ๊ด์ ์ด๊ณ ์ฌ์ฉ์ ์นํ์ ์ธ ๋๊ตฌ๋ฅผ ์ ๊ณตํจ์ผ๋ก์จ Python ์ข ์์ฑ ๊ด๋ฆฌ์ ํ๋ช ์ ์ผ์ผ์ผฐ์ต๋๋ค. ์ ์ธ๊ณ Python ๊ฐ๋ฐ์๋ค์ ์ฑํ์ ์ํฌํ๋ก์ฐ ๊ฐ์ํ, ์ผ๊ด์ฑ ๋ณด์ฅ ๋ฐ ์ ๋ฐ์ ์ธ ๊ฐ๋ฐ ๊ฒฝํ ๊ฐ์ ์ ์์ด ๊ทธ ๊ฐ์น๋ฅผ ์ ์ฆํฉ๋๋ค. Poetry๋ฅผ ์์ฉํจ์ผ๋ก์จ Python ํ๋ก์ ํธ๋ฅผ ํฅ์์ํค๊ณ ํ๋์ ์ธ Python ๊ฐ๋ฐ ํ๋ช ์ ๋์ฐธํ ์ ์์ต๋๋ค.
๋ ธ๋ จํ Python ๊ฐ๋ฐ์์ด๋ ์ด์ ๋ง ์ฌ์ ์ ์์ํ๋ ๊ฐ๋ฐ์์ด๋ , Poetry๋ฅผ ์ํฌํ๋ก์ฐ์ ํตํฉํ๋ฉด ์์ฐ์ฑ์ ํฌ๊ฒ ํฅ์์ํค๊ณ , ์ข ์์ฑ ๊ด๋ จ ๋ฌธ์ ๋ฅผ ์ค์ด๋ฉฐ, ๋์ฑ ๊ฒฌ๊ณ ํ๊ณ ์ฌํ ๊ฐ๋ฅํ Python ํ๋ก์ ํธ๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค. Python ์ํ๊ณ๊ฐ ๊ณ์ ๋ฐ์ ํจ์ ๋ฐ๋ผ Poetry์ ๊ฐ์ ๋๊ตฌ๋ ์ ์ธ๊ณ์ ์ผ๋ก ํจ์จ์ ์ด๊ณ ์ ๋ขฐํ ์ ์๋ ์ํํธ์จ์ด ๊ฐ๋ฐ ๊ดํ์ ์ง์ํ๋ ๋ฐ ์ค์ํ ์ญํ ์ ํ ๊ฒ์ ๋๋ค.
Python ํ๋ก์ ํธ์ Poetry๋ฅผ ํตํฉํ๊ณ ํ๋์ ์ธ Python ์ข ์์ฑ ๊ด๋ฆฌ์ ์ด์ ์ ๊ฒฝํํด ๋ณด์ญ์์ค.