Python ๊ฐ๋ฐ์ ๊ฐ๋ ฅํ ๋๊ตฌ Poetry ํ์ฉ๋ฒ
Warning
์ด ํฌ์คํ ์ ์๋ฌธ์ ํ ๋๋ ธํธ์ ๋๋ค. ์๋ฌธ์ ์ฐธ์กฐํ์ธ์.
1. Poetry๋?
Poetry๋ Python ํ๋ก์ ํธ์ ์์กด์ฑ ๊ด๋ฆฌ์ ํจํค์ง ๋ฐฐํฌ๋ฅผ ๊ฐ์ํํ๋ ๋๊ตฌ์
๋๋ค. ๊ธฐ์กด์ pip์ virtualenv๋ฅผ ๋์ฒดํ๋ฉฐ, ํ๋ก์ ํธ ์ค์ ๊ณผ ์์กด์ฑ์ ์ ์ธ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์๋ pyproject.toml ํ์ผ์ ์ค์ฌ์ผ๋ก ์๋ํ๋ค.
์ฃผ์ ํน์ง
- ์์กด์ฑ ์ ๊ธ(
poetry.lock)
์ ํํ ๋ฒ์ ์ ์์กด์ฑ์ ๊ธฐ๋กํด, ํ๋ก์ ํธ๋ฅผ ๋ค์ํ ํ๊ฒฝ์์ ๋์ผํ๊ฒ ์ฌํ ๊ฐ๋ฅ. - ๊ฐ์ ํ๊ฒฝ ์๋ ๊ด๋ฆฌ
ํ๋ก์ ํธ๋ณ๋ก ๋ ๋ฆฝ๋ ๊ฐ์ ํ๊ฒฝ์ ์์ฑํ๊ณ ๊ด๋ฆฌ.
2. Poetry์ ๊ธฐ์กด pip ๋ฐฉ์์ ์ฐจ์ด์
| ํน์ง | Poetry | ๊ธฐ์กด pip + virtualenv |
|---|---|---|
| ์์กด์ฑ ๊ด๋ฆฌ | pyproject.toml์ ์ ์ธ์ ๊ด๋ฆฌ, poetry.lock์ผ๋ก ์ ๊ธ | ์๋์ผ๋ก requirements.txt ์์ฑ ๋ฐ ๊ด๋ฆฌ |
| ๊ฐ์ ํ๊ฒฝ ๊ด๋ฆฌ | ํ๋ก์ ํธ๋ณ ๊ฐ์ ํ๊ฒฝ ์๋ ์์ฑ ๋ฐ ๊ด๋ฆฌ | ๋ณ๋ ๊ฐ์ ํ๊ฒฝ ์์ฑ ๋ฐ ๊ด๋ฆฌ ํ์ |
| ์ฌํ์ฑ ๋ณด์ฅ | poetry.lock์ ํตํด ๋์ผํ ์์กด์ฑ ๋ณด์ฅ | requirements.txt์ ๊ธฐ๋ก๋ ๋ฒ์ ๋ง ๋ณด์ฅ, ์ถฉ๋ ๊ฐ๋ฅ์ฑ ์์ |
| ํตํฉ ๊ด๋ฆฌ | ์์กด์ฑ ๊ด๋ฆฌ, ๊ฐ์ ํ๊ฒฝ ์์ฑ, ๋ฐฐํฌ ๊ธฐ๋ฅ ์ ๊ณต | ๊ฐ๋ณ ๋๊ตฌ(pip, virtualenv, twine) ์ฌ์ฉ |
| ํธ์์ฑ | ์ ์ธ์ ๊ด๋ฆฌ๋ก ๊ฐ๋จ, ๋ช ํ | ๋ฐ๋ณต์ ์ด๊ณ ์๋์ ์ธ ์์ ํ์ |
Poetry๋ ์์กด์ฑ ๊ด๋ฆฌ์ ์ฌํ์ฑ ๋ณด์ฅ์์ ํนํ ๊ฐ๋ ฅํ๋ค. poetry.lock ํ์ผ์ ์์กด์ฑ ํธ๋ฆฌ์ ์ ํํ ๋ฒ์ ์ ๊ธฐ๋กํ์ฌ, ๋์ผํ ํ๊ฒฝ์์ ํ๋ก์ ํธ๋ฅผ ์ฌํํ ์ ์๋๋ก ๋ณด์ฅํ๋ค. ๋ฐ๋ฉด, pip ๋ฐฉ์์ ์ถฉ๋ ๊ฐ๋ฅ์ฑ์ ์์ ํ ์ ๊ฑฐํ๊ธฐ ์ด๋ ต๋ค.
3. Poetry ์ค์น
Poetry๋ Python 3.6 ์ด์์์ ์ฌ์ฉํ ์ ์๋ค.
์ค์น ๋ฐฉ๋ฒ
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 -์ค์น ์๋ฃ ํ ํ๊ฒฝ ๋ณ์(PATH) ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฉด ์๋์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ฐธ๊ณ ํ์.
4. ํ๊ฒฝ ๋ณ์ ์ค๋ฅ ํด๊ฒฐ
Poetry ๊ฒฝ๋ก ํ์ธ
where poetry๊ฒฝ๋ก ์๋ ์ค์
Windows:
- ํ๊ฒฝ ๋ณ์ ์ค์ ์์
Path์ Poetry ์ค์น ๊ฒฝ๋ก ์ถ๊ฐ.- ๊ธฐ๋ณธ ๊ฒฝ๋ก:
%USEPROFILE%\AppData\Roaming\Python\Scripts\poetry.exe
- ๊ธฐ๋ณธ ๊ฒฝ๋ก:
macOS/Linux:
-
์ ์ค์ ํ์ผ ์์ :
nano ~/.zshrc -
์๋ ๋ด์ฉ์ ์ถ๊ฐ:
export PATH="$HOME/.local/bin:$PATH" -
์ ์ฉ:
source ~/.zshrc
5. Poetry๋ก ํ๋ก์ ํธ ์์ฑ
๊ธฐ์กด ๋๋ ํ ๋ฆฌ ์ด๊ธฐํ
poetry init์ ํ๋ก์ ํธ ์์ฑ
poetry new ํ๋ก์ ํธ์ด๋ฆ์: poetry-demo ํ๋ก์ ํธ ์์ฑ:
poetry new poetry-demo์์ฑ๋ ํ๋ก์ ํธ ๊ตฌ์กฐ
๐ฆpoetry-demo
โฃ ๐poetry_demo
โฃ ๐tests
โฃ ๐pyproject.toml
โ ๐README.md
6. ์์กด์ฑ ๊ด๋ฆฌ
ํจํค์ง ์ถ๊ฐ
poetry add ํจํค์ง๋ช
๊ฐ๋ฐ์ฉ ์์กด์ฑ ์ถ๊ฐ
poetry add --group devํน์ ๋ฒ์ ์ถ๊ฐ
poetry add <ํจํค์ง๋ช
>@<๋ฒ์ >ํจํค์ง ์ญ์
poetry remove ํจํค์ง๋ช
7. ๊ฐ์ ํ๊ฒฝ ๊ด๋ฆฌ
๊ฐ์ ํ๊ฒฝ ํ์ฑํ
poetry shell๊ฐ์ ํ๊ฒฝ ๋นํ์ฑํ
deactivate๊ฐ์ ํ๊ฒฝ ์ ๋ณด
poetry env info8. ์์กด์ฑ ๋ด๋ณด๋ด๊ธฐ
Poetry๋ฅผ ์ฌ์ฉํด requirements.txt ํ์ผ์ ์์ฑ:
poetry export -f requirements.txt --output requirements.txt์ต์
--without-hashes: ํด์๊ฐ ์ ์ธ.--dev: ๊ฐ๋ฐ์ฉ ์์กด์ฑ ํฌํจ.
9. ํ๋ก์ ํธ ๋น๋ ๋ฐ ๋ฐฐํฌ
ํ๋ก์ ํธ ๋น๋
poetry buildPyPI์ ๋ฐฐํฌ
poetry publish10. Poetry์ ์ฅ์ ์์ฝ
- ์์กด์ฑ ๊ด๋ฆฌ ๊ฐ์ํ: ์ ์ธ์ ์ผ๋ก ์์กด์ฑ์ ๊ด๋ฆฌํ๋ฉฐ,
poetry.lock์ผ๋ก ์ฌํ์ฑ ๋ณด์ฅ. - ๊ฐ์ ํ๊ฒฝ ํตํฉ: ํ๋ก์ ํธ๋ณ ๊ฐ์ ํ๊ฒฝ์ ์๋ ์์ฑ ๋ฐ ๊ด๋ฆฌ.
- ๋ฐฐํฌ ๊ฐ์ํ:
pyproject.toml์ ํตํด ๋น๋ ๋ฐ ๋ฐฐํฌ ์์ ๊ฐ์ํ. - ๊ฐ๋ ฅํ ์ฌํ์ฑ: ์์กด์ฑ ์ถฉ๋์ ๋ฐฉ์งํ๊ณ ๋์ผํ ํ๊ฒฝ์ ๋ณต์ ๊ฐ๋ฅ.
๋จ์ ์ผ๋ก๋ ์ผ๋ถ ํจํค์ง ๊ด๋ฆฌ ํด๊ณผ์ ํธํ์ฑ ๋ถ์กฑ ๋ฌธ์ ์ ์ด๊ธฐ ๋ฌ๋ ์ปค๋ธ๊ฐ ์๋ค.