๐ 1. pigar
์๋ํ๋ ๋ถ์๊ณผ ๊ด๋ฆฌ์ ๊ฐ์ ์ด ์๋ ๋๊ตฌ
โ ํน์ง
- ํ๋ก์ ํธ ์ฝ๋์์ ์ฌ์ฉ๋ import ๋ฌธ์ ๊ธฐ๋ฐ์ผ๋ก ์ข ์์ฑ์ ์๋ ์ถ์ถํ์ฌ requirements.txt๋ฅผ ์์ฑ
- PyPI๋ฅผ ํตํด ์ต์ ํจํค์ง ๋ฒ์ ์ ์๋ ๊ฐ์งํ์ฌ requirements.txt์ ์ถ๊ฐ
- ํ๋ก์ ํธ ํด๋ ๋ด์์ ์คํํ๋ฉด ๋ชจ๋ ์๋ธ๋๋ ํ ๋ฆฌ๊น์ง ํ์ํ์ฌ ํ์ํ ํจํค์ง๋ฅผ ์ฐพ์
- ์บ์ ๊ธฐ๋ฅ์ด ์์ด์ ํ ๋ฒ ์ฐพ์ ํจํค์ง๋ฅผ ๋ค์ ๋ถ์ํ ๋ ์๋๊ฐ ๋น ๋ฆ
- ๋จ์ import ๊ธฐ๋ฐ ๋ถ์์ด๋ผ์ ๋์ import (์: importlib.import_module)๋ ์ถ์ ๋ถ๊ฐ
โ ์ค์น ๋ฐ ์ฌ์ฉ๋ฒ
pip install pigar
pigar generate
- ํ์ฌ ๋๋ ํ ๋ฆฌ ๋ด์์ ์ข ์์ฑ์ ๋ถ์ํ๊ณ requirements.txt๋ฅผ ์์ฑํจ.
- ํน์ ํ๋ก์ ํธ ํด๋๋ฅผ ์ง์ ํ์ฌ ์คํ ๊ฐ๋ฅ:
pigar generate -p /path/to/project
โ ์ฅ์
- ํจํค์ง ๋ฒ์ ๊น์ง ์๋์ผ๋ก ๊ด๋ฆฌํ์ฌ ์ต์ ์ํ๋ก ์ ์ง ๊ฐ๋ฅ
- ์บ์ ๊ธฐ๋ฅ ๋๋ถ์ ๋ฐ๋ณต ์คํ ์ ์๋๊ฐ ๋น ๋ฆ
- ์๋ธ๋๋ ํ ๋ฆฌ๊น์ง ์๋ ๊ฒ์ํ์ฌ ์ข ์์ฑ์ ๋์น ๊ฐ๋ฅ์ฑ์ด ์ ์
โ ๋จ์
- ์ฝ๋์์ ์ฌ์ฉ๋ import ๋ฌธ์ ๊ธฐ๋ฐ์ผ๋ก ๋ถ์ํ๋ฏ๋ก, setup.py๋ pyproject.toml ๊ฐ์ ์ค์ ํ์ผ์ ํ์ฉํ์ง ์์
- importlib๊ณผ ๊ฐ์ ๋์ import๋ ๋ถ์ํ์ง ๋ชปํจ
- ๋ถ์ ์๋๊ฐ pipreqs๋ณด๋ค ๋๋ฆด ์ ์์
๐ 2. pipreqs
๊ฐ๋ฒผ์ด ๋ถ์๊ณผ ๋น ๋ฅธ ์คํ์ด ๊ฐ์ ์ธ ๋๊ตฌ
โ ํน์ง
- ํ๋ก์ ํธ ์ฝ๋์์ ์ฌ์ฉ๋ ํจํค์ง ์ด๋ฆ๋ง ์ถ์ถํ์ฌ requirements.txt๋ฅผ ์์ฑ (๋ฒ์ ์ ๋ณด ์์)
- ๋น ๋ฅธ ์๋๋ก ์ข ์์ฑ์ ๋ถ์ํ์ฌ ๊ฐ๋ฒผ์ด ํ๋ก์ ํธ์ ์ ํฉ
- .py ํ์ผ์ ์ง์ ๊ฒ์ฌํ์ฌ import ๋ฌธ์์ ์ฌ์ฉ๋ ํจํค์ง๋ง ๋ฆฌ์คํธ์
- ํจํค์ง ๋ฒ์ ์ ๋ณด๋ฅผ ์ถ๊ฐํ๋ ค๋ฉด --savepath ์ต์ ์ ์ฌ์ฉํด์ผ ํจ
- importlib ๊ฐ์ ๋์ import๋ ๊ฐ์งํ์ง ๋ชปํจ
โ ์ค์น ๋ฐ ์ฌ์ฉ๋ฒ
pip install pipreqs
pipreqs /path/to/project --force
- ์ง์ ๋ ํ๋ก์ ํธ ํด๋์์ ์ข ์์ฑ์ ๋ถ์ํ๊ณ requirements.txt๋ฅผ ์์ฑ
- ๊ธฐ์กด requirements.txt๋ฅผ ๋ฎ์ด์ฐ๋ ค๋ฉด --force ์ต์ ์ ์ฌ์ฉ
- ๋ฒ์ ์ ๋ณด๋ฅผ ํฌํจํ๋ ค๋ฉด:
pipreqs /path/to/project --force --savepath requirements.txt
โ ์ฅ์
- ๋งค์ฐ ๋น ๋ฅธ ์คํ ์๋ (๊ฐ๋ฒผ์ด ํ๋ก์ ํธ์ ์ ํฉ)
- ํด๋๋ฅผ ์ง์ ํด์ ํน์ ๋๋ ํ ๋ฆฌ๋ง ๋ถ์ ๊ฐ๋ฅ
- requirements.txt ํ์ผ์ ๊ฐ๋จํ ์์ฑํ๋ ์ฉ๋๋ก ์ ์
โ ๋จ์
- ๊ธฐ๋ณธ์ ์ผ๋ก ํจํค์ง ๋ฒ์ ์ ๋ณด๋ฅผ ํฌํจํ์ง ์์
- setup.py ๋ฑ์ ์ถ๊ฐ ์ค์ ํ์ผ์ ์ฐธ๊ณ ํ์ง ์์
- importlib ๊ฐ์ ๋์ import๋ ๋ถ์ํ์ง ๋ชปํจ
- pigar๋ณด๋ค ์ข ์์ฑ ํ์ง๊ฐ ๋จ์ํ์ฌ ์ผ๋ถ ํจํค์ง๋ฅผ ๋์น ๊ฐ๋ฅ์ฑ์ด ์์
โ ๋น๊ต ์์ฝ
๊ธฐ๋ฅ pigar pipreqs
ํจํค์ง ๋ถ์ ๋ฐฉ์ | ์ฝ๋์์ ์ฌ์ฉ๋ import ๋ถ์ | ์ฝ๋์์ ์ฌ์ฉ๋ import ๋ถ์ |
๋ฒ์ ์ ๋ณด ํฌํจ ์ฌ๋ถ | โ ํฌํจ | โ ๊ธฐ๋ณธ์ ์ผ๋ก ํฌํจ ์ ํจ (์ต์ ์ฌ์ฉ ๊ฐ๋ฅ) |
์๋ | ์๋์ ์ผ๋ก ๋๋ฆผ (์บ์ ํ์ฉ ๊ฐ๋ฅ) | ๋งค์ฐ ๋น ๋ฆ |
์๋ธ๋๋ ํ ๋ฆฌ ์๋ ํ์ | โ ๊ฐ๋ฅ | โ ๊ฐ๋ฅ |
๋์ import ๋ถ์ | โ ๋ถ๊ฐ๋ฅ | โ ๋ถ๊ฐ๋ฅ |
์ค์น ๋ฐ ์ฌ์ฉ๋ฒ | pigar generate | pipreqs /path/to/project --force |
์ถ๊ฐ ๊ธฐ๋ฅ | ์ต์ ๋ฒ์ ์๋ ํ์ธ | ๊ฐ๋จํ requirements.txt ์์ฑ |
๐ ์ด๋ค ๊ฒฝ์ฐ์ ์ด๋ค ๋๊ตฌ๋ฅผ ์จ์ผ ํ ๊น?
- ํจํค์ง ๋ฒ์ ๊น์ง ํฌํจํ์ฌ ์ข ์์ฑ์ ์๋ฒฝํ๊ฒ ๊ด๋ฆฌํ๊ณ ์ถ๋ค๋ฉด? → pigar
- ๊ฐ๋ณ๊ณ ๋น ๋ฅด๊ฒ requirements.txt๋ฅผ ๋ง๋ค๊ณ ์ถ๋ค๋ฉด? → pipreqs
- ๋๊ท๋ชจ ํ๋ก์ ํธ์์ ์๋ธ๋๋ ํ ๋ฆฌ๊น์ง ๊น์ด ๋ถ์ํด์ผ ํ๋ค๋ฉด? → pigar
- ๋น ๋ฅด๊ฒ ์ข ์์ฑ ๋ชฉ๋ก๋ง ์์ฑํ๊ณ , ์ดํ ๋ฒ์ ์ ์ง์ ๊ด๋ฆฌํ๊ณ ์ถ๋ค๋ฉด? → pipreqs
๐ฏ ๊ฒฐ๋ก
- ๋น ๋ฅธ ์คํ ์๋๊ฐ ํ์ํ๊ณ , ๋ฒ์ ์ ๋ณด๊ฐ ์์ด๋ ๋๋ค๋ฉด → pipreqs๊ฐ ์ ํฉ
- ํจํค์ง ๋ฒ์ ๊ด๋ฆฌ๊น์ง ์๋ํํ๊ณ ์ถ๋ค๋ฉด → pigar๊ฐ ์ ํฉ
โก ์ถ์ฒ: ํ๋ก์ ํธ ์ด๊ธฐ์ ๊ฐ๋ณ๊ฒ pipreqs๋ฅผ ์ฌ์ฉํ์ฌ requirements.txt๋ฅผ ๋ง๋ค๊ณ , ๋์ค์ pigar๋ก ๋ฒ์ ์ ๋ณด๋ฅผ ํฌํจํด ์ ๋ฐ์ดํธํ๋ ๊ฒ๋ ์ข์ ๋ฐฉ๋ฒ์ ๋๋ค.
'Tip > Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Ruff๋ฅผ ์ด์ฉํ Python ์ฝ๋ ํ์ง ๊ด๋ฆฌ ๋ฐ VS Code์์์ Python ์ฝ๋ฉRuff ์๊ฐ (0) | 2024.01.28 |
---|