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:

  1. ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ •์—์„œ Path์— Poetry ์„ค์น˜ ๊ฒฝ๋กœ ์ถ”๊ฐ€.
    • ๊ธฐ๋ณธ ๊ฒฝ๋กœ: %USEPROFILE%\AppData\Roaming\Python\Scripts\poetry.exe

macOS/Linux:

  1. ์‰˜ ์„ค์ • ํŒŒ์ผ ์ˆ˜์ •:

    nano ~/.zshrc
  2. ์•„๋ž˜ ๋‚ด์šฉ์„ ์ถ”๊ฐ€:

    export PATH="$HOME/.local/bin:$PATH"
  3. ์ ์šฉ:

    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 info

8. ์˜์กด์„ฑ ๋‚ด๋ณด๋‚ด๊ธฐ

Poetry๋ฅผ ์‚ฌ์šฉํ•ด requirements.txt ํŒŒ์ผ์„ ์ƒ์„ฑ:

poetry export -f requirements.txt --output requirements.txt

์˜ต์…˜

  • --without-hashes: ํ•ด์‹œ๊ฐ’ ์ œ์™ธ.
  • --dev: ๊ฐœ๋ฐœ์šฉ ์˜์กด์„ฑ ํฌํ•จ.

9. ํ”„๋กœ์ ํŠธ ๋นŒ๋“œ ๋ฐ ๋ฐฐํฌ

ํ”„๋กœ์ ํŠธ ๋นŒ๋“œ

poetry build

PyPI์— ๋ฐฐํฌ

poetry publish

10. Poetry์˜ ์žฅ์  ์š”์•ฝ

  • ์˜์กด์„ฑ ๊ด€๋ฆฌ ๊ฐ„์†Œํ™”: ์„ ์–ธ์ ์œผ๋กœ ์˜์กด์„ฑ์„ ๊ด€๋ฆฌํ•˜๋ฉฐ, poetry.lock์œผ๋กœ ์žฌํ˜„์„ฑ ๋ณด์žฅ.
  • ๊ฐ€์ƒ ํ™˜๊ฒฝ ํ†ตํ•ฉ: ํ”„๋กœ์ ํŠธ๋ณ„ ๊ฐ€์ƒ ํ™˜๊ฒฝ์„ ์ž๋™ ์ƒ์„ฑ ๋ฐ ๊ด€๋ฆฌ.
  • ๋ฐฐํฌ ๊ฐ„์†Œํ™”: pyproject.toml์„ ํ†ตํ•ด ๋นŒ๋“œ ๋ฐ ๋ฐฐํฌ ์ž‘์—… ๊ฐ„์†Œํ™”.
  • ๊ฐ•๋ ฅํ•œ ์žฌํ˜„์„ฑ: ์˜์กด์„ฑ ์ถฉ๋Œ์„ ๋ฐฉ์ง€ํ•˜๊ณ  ๋™์ผํ•œ ํ™˜๊ฒฝ์„ ๋ณต์ œ ๊ฐ€๋Šฅ.

๋‹จ์ ์œผ๋กœ๋Š” ์ผ๋ถ€ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ ํˆด๊ณผ์˜ ํ˜ธํ™˜์„ฑ ๋ถ€์กฑ ๋ฌธ์ œ์™€ ์ดˆ๊ธฐ ๋Ÿฌ๋‹ ์ปค๋ธŒ๊ฐ€ ์žˆ๋‹ค.