[์ค์น] pipenv๋ก pyenv ๋ฝ ๋ฝ๊ธฐ
์๋ณธ ๊ฒ์๊ธ: https://velog.io/@euisuk-chung/pipenv-๋๋-๊ฐ์ด-์ค๊ณ -pyenv-pipenv
์ง๋ ๋ฒ ํฌ์คํ
์์๋ pyenv์ ๋ํด์ ์ดํด๋ณด๊ณ ์ด๋ฅผ ๋ฆฌ๋
์ค ํ๊ฒฝ(+Windowํ๊ฒฝ)์ ์ค์นํ๋ ๋ฐฉ๋ฒ์ ๋ํด์ ์ดํด๋ดค๋๋ฐ์(๋งํฌ) ์ด๋ฒ ํฌ์คํ
์์๋ pyenv์ ํจ๊ณผ๋ฅผ ๊ทน๋ํํ ์ ์๋ pipenv์ ๋ํด์ ์ดํด๋ณด๊ณ , ์ด๋ฅผ ์ด๋ป๊ฒ ์ฌ์ฉํ ์ง ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค ๐ค
1. pipenv๋?
- ์ ์: pipenv๋ ํ์ด์ฌ์ ์์กด์ฑ ๊ด๋ฆฌ์ ๊ฐ์ ํ๊ฒฝ์ ํตํฉ์ ์ผ๋ก ๊ด๋ฆฌํ๋ ๋๊ตฌ์
๋๋ค. ์ด ๋๊ตฌ๋
Pipfile๊ณผPipfile.lockํ์ผ์ ์ด์ฉํ์ฌ ์์กด์ฑ์ ๋ช ์ํ๊ณ , ํ๋ก์ ํธ๋ง๋ค ๋ ๋ฆฝ๋ ๊ฐ์ ํ๊ฒฝ์ ์์ฑํ์ฌ ๊ด๋ฆฌํฉ๋๋ค. ์ด๋ฅผ ํตํด ๊ฐ๋ฐ ํ๊ฒฝ์ ์ผ๊ด์ฑ๊ณผ ์ฌํ์ฑ์ ๋ณด์ฅํฉ๋๋ค.
2. pipenv ์ค์น ๋ฐฉ๋ฒ
- pipenv ์ค์น:
1
pip install pipenv
์ด ๋ช ๋ น์ ์์คํ ์ pipenv๋ฅผ ์ค์นํฉ๋๋ค. ํน์ ์ฌ์ฉ์์ ๊ตญํํ์ง ์๊ณ ์์คํ ์ ์ฒด์ ์ค์น๋ฉ๋๋ค.
3. pipenv ๊ฐ์ ํ๊ฒฝ ์์ฑ ๋ฐ ๊ด๋ฆฌ
-
(์ฐธ๊ณ ) ๋ด PyENV ํ๊ฒฝ์ ์ค์น๋ ํ์ด์ฌ ๋ฒ์ ๋ฆฌ์คํธ ํ์ธํ๊ธฐ
1
pyenv versions # check installed envs
-
๊ฐ์ ํ๊ฒฝ ์์ฑ:
1 2 3
mkdir MyProject cd MyProject pipenv --python 3.9.1
์ด ๋ช ๋ น์ ํ๋ก์ ํธ ๋๋ ํ ๋ฆฌ ๋ด์
Pipfile์ ์์ฑํ๊ณ ์ง์ ๋ ํ์ด์ฌ ๋ฒ์ ์ผ๋ก ๊ฐ์ ํ๊ฒฝ์ ์ด๊ธฐํํฉ๋๋ค. -
๊ฐ์ ํ๊ฒฝ ํ์ฑํ ๋ฐ ๋นํ์ฑํ:
1 2
pipenv shell # ํ์ฑํ exit # ๋นํ์ฑํ
-
pyenv์์ ์ฐ๋:
- ์์คํ ์ ์ํ๋ ํ์ด์ฌ ๋ฒ์ ์ด ์๋ ๊ฒฝ์ฐ, pipenv๋ pyenv๋ฅผ ํตํด ์๋์ผ๋ก ํด๋น ๋ฒ์ ์ ์ค์นํ๋๋ก ์์ฒญํ ์ ์์ต๋๋ค.
4. Pipfile?
Pipfile์ ์ผ๋ฐ์ ์ผ๋ก ํ๋ก์ ํธ์ ๋ฃจํธ ๋๋ ํ ๋ฆฌ์ ์์นํ๊ฒ ๋ฉ๋๋ค. ์ด ํ์ผ์ ํ๋ก์ ํธ์ ๊ด๋ จ๋ ํ์ด์ฌ ์์กด์ฑ์ ๊ด๋ฆฌํ๊ธฐ ์ํ ์ฃผ์ ํ์ผ๋ก, ํ๋ก์ ํธ ํด๋์ ์ง์ ์์ฑ๋ฉ๋๋ค.
- Pipfile์ ์์น: Pipfile์ ํ๋ก์ ํธ ํด๋ ์์ ์์นํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ํ๋ก์ ํธ ํด๋๊ฐ MyProject๋ผ๋ฉด, MyProject/Pipfile์ ์์นํ๊ฒ ๋ฉ๋๋ค.
- Pipfile์ ํ์ฅ์: Pipfile์ ํ์ฅ์ ์์ด ๊ทธ๋ฅ Pipfile๋ก ์ ์ฅ๋ฉ๋๋ค. ์ด์๋ ๋ณ๊ฐ๋ก, ์์กด์ฑ์ ๊ณ ์ ํ๋ Pipfile.lock ํ์ผ๋ ๊ฐ์ ํด๋์ ์์ฑ๋๋ฉฐ, ์ด ํ์ผ ์ญ์ ํ์ฅ์๊ฐ ์์ต๋๋ค.
-
Pipfile๊ณผ Pipfile.lock์ ์ฌ์ฉ:
Pipfile: ํ๋ก์ ํธ์ ํ์ํ ํจํค์ง์ ํ์ด์ฌ ๋ฒ์ ์ ์ ์ธ์ ์ผ๋ก ๋ช ์ํฉ๋๋ค.Pipfile.lock:pipenv lock๋ช ๋ น์ ์คํํ์ฌ ์์ฑ๋๋ฉฐ, ์ด ํ์ผ์Pipfile์ ์ ์ธ๋ ์์กด์ฑ์ ๋ํ ๊ตฌ์ฒด์ ์ธ ๋ฒ์ ์ ๋ณด์ ํด์๊ฐ์ ํฌํจํฉ๋๋ค. ์ด ํ์ผ์ ํตํด ํ๋ก์ ํธ๊ฐ ๋ค๋ฅธ ์์คํ ์์ ๋์ผํ๊ฒ ์ฌํ๋ ์ ์์ต๋๋ค.
-
Lock ํ์ผ ์์ฑ ๋ฐ ์ฌ์ฉ ์์:
1 2
pipenv install numpy # numpy ์ค์น pipenv lock # Pipfile.lock ์์ฑ ๋ฐ ์ ๋ฐ์ดํธ
ํ๋ก์ ํธ๋ฅผ ๋ฐฐํฌํ๊ฑฐ๋ ๋ค๋ฅธ ๊ฐ๋ฐ ํ๊ฒฝ์์ ์์ ์ ์ฌ๊ฐํ ๋
Pipfile.lock์ ์ฌ์ฉํ์ฌ ์ ํํ ๊ฐ์ ์์กด์ฑ์ ์ค์นํฉ๋๋ค.
5. pipenv lock?
โ๏ธ pipenv lock ๋ช
๋ น์ ์ญํ
- ์ข
์์ฑ ์ ๊ธ:
pipenv lock์Pipfile์ ๋ช ์๋ ์ข ์์ฑ์ ๊ธฐ๋ฐ์ผ๋กPipfile.lockํ์ผ์ ์์ฑํ๊ฑฐ๋ ์ ๋ฐ์ดํธํฉ๋๋ค. ์ด ํ์ผ์ ํ๋ก์ ํธ์ ๋ชจ๋ ์ข ์์ฑ๊ณผ ๊ทธ ์ ํํ ๋ฒ์ ์ ํฌํจํ๊ณ , ์ด๋ฅผ ํตํด ๊ฐ๋ฐ ํ๊ฒฝ์ ์ผ๊ด์ฑ์ ์ ์งํฉ๋๋ค. - ํ๊ฒฝ ์ฌํ:
Pipfile.lock์ ํ๋ก์ ํธ๋ฅผ ๋ค๋ฅธ ์์คํ ์ด๋ ๋ค๋ฅธ ๊ฐ๋ฐ์์๊ฒ ์ ๋ฌํ ๋ ๋์ผํ ์ข ์์ฑ์ ํ์คํ๊ฒ ์ฌํํ ์ ์๊ฒ ํด์ค๋๋ค. ์ด๋ ๋ชจ๋ ์ฌ์ฉ์๊ฐ ๋์ผํ ํ๊ฒฝ์์ ์์ ํ ์ ์๋๋ก ๋ณด์ฅํฉ๋๋ค.
๐ก Q.
pipenv install numpy๋ง ์ํํด๋, pipfile์ ์ ๋ฐ์ดํธ๊ฐ ๋ ํ ๋ฐ, ๊ตณ์ด lock์ ํด์ฃผ๋ ์ด์ ๊ฐ ๋ญ๊น์?๐ A.
pipenv install๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ๋ฉด ์๋์ผ๋ก Pipfile์ด ์ ๋ฐ์ดํธ๋๋ฉฐ, ํ์ํ ํจํค์ง๊ฐ ์ค์น๋ฉ๋๋ค. ๊ทธ๋ฐ๋ฐ pipenv lock ๋ช ๋ น์ด๋ฅผ ์คํํ๋ ๊ฒ์ ์ถ๊ฐ์ ์ธ ๋ชฉ์ ์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
โ๏ธ pipenv install๊ณผ pipenv lock์ ์ฐจ์ด
pipenv install: ์ด ๋ช ๋ น์Pipfile์ ๋ช ์๋ ํจํค์ง๋ฅผ ์ค์นํ๊ณ ์๋์ผ๋กPipfile.lock์ ์ ๋ฐ์ดํธํฉ๋๋ค. ์ด ๊ณผ์ ์์ ์๋ก์ด ํจํค์ง๊ฐ ์ค์น๋๊ฑฐ๋ ์ ๋ฐ์ดํธ๋ ๋๋ง๋คPipfile.lock์ด ๊ฐฑ์ ๋์ด ํ์ฌ ํ๊ฒฝ์ ๋ฐ์ํฉ๋๋ค.-
pipenv lock: ์ด ๋ช ๋ น์ ์ค์ ๋ก ํจํค์ง๋ฅผ ์ค์นํ์ง ์๊ณ , ํ์ฌPipfile์ ์ํ๋ฅผ ๋ฐํ์ผ๋กPipfile.lock๋ง์ ๊ฐฑ์ ํฉ๋๋ค. ์ด๋ ํจํค์ง๋ฅผ ์ค์ ๋ก ์ค์นํ์ง ์๊ณ ๋ ์ข ์์ฑ์ ์ ํํ ์ ๊ทธ๊ณ ์ถ์ ๋ ์ ์ฉํฉ๋๋ค.pipenv lock๋ช ๋ น์ ์ฌ์ฉํด์ผ ํ๋ ๋ช ๊ฐ์ง ํน๋ณํ ๊ฒฝ์ฐ๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค:- ์ข
์์ฑ ํ์ผ(Pipfile)์ ์๋ ๋ณ๊ฒฝ: ๊ฐ๋ฐ์๊ฐ
Pipfile์ ์๋์ผ๋ก ํธ์งํ์ฌ ํจํค์ง ๋ฒ์ ์ ๋ณ๊ฒฝํ๊ฑฐ๋ ์ ํจํค์ง๋ฅผ ์ถ๊ฐํ๋ ๊ฒฝ์ฐ,Pipfile.lock์ ๊ฐฑ์ ํด์ผ ๊ทธ ๋ณ๊ฒฝ์ฌํญ์ด ์ ํํ๊ฒ ๋ฐ์๋ฉ๋๋ค. ์ด๋Pipfile์ ์ํ๊ฐPipfile.lock๊ณผ ๋๊ธฐํ๋๋๋ก ํ๋ ๋ฐ ํ์ํฉ๋๋ค. - ํ์ ์ข
์์ฑ(ํจํค์ง)์ ์
๋ฐ์ดํธ: ํจํค์ง์ ํ์ ์ข
์์ฑ์ด ์
๋ฐ์ดํธ๋์์ ๊ฒฝ์ฐ,
pipenv lock๋ช ๋ น์ ์คํํ์ฌ ์ด๋ฌํ ๋ณ๊ฒฝ์ฌํญ์Pipfile.lock์ ๋ฐ์ํ ์ ์์ต๋๋ค. ์ด๋ ํ์ ํจํค์ง์ ๋ฒ์ ๋ณ๋์ด ์์ ํจํค์ง์ ๊ธฐ๋ฅ์ฑ์ ์ํฅ์ ๋ฏธ์น ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค. - ๋ณด์ ํจ์น ์
๋ฐ์ดํธ: ๋ณด์ ์ทจ์ฝ์ ์ด ๋ฐ๊ฒฌ๋์ด ํด๋น ํจํค์ง์ ์๋ก์ด ๋ฒ์ ์ด ์ถ์๋์์ ๋,
pipenv lock์ ์ฌ์ฉํ์ฌ ์ต์ ๋ณด์ ํจ์น๊ฐ ์ ์ฉ๋ ๋ฒ์ ์ผ๋ก ์ข ์์ฑ์ ๊ฐฑ์ ํ ์ ์์ต๋๋ค. ์ด๋ ํ๋ก์ ํธ์ ๋ณด์์ ๊ฐํํ๋ ๋ฐ ์ค์ํฉ๋๋ค. - ํธํ์ฑ ๊ฒ์ฆ(์ ํ๊ฒฝ ํ
์คํธ): ํ๋ก์ ํธ๋ฅผ ์๋ก์ด ํ๊ฒฝ์ ๋ฐฐํฌํ๊ธฐ ์ ์
pipenv lock์ ์คํํ์ฌ ์ต์ ์ข ์์ฑ ์ํ๋ฅผ ํ์ ํ๊ณ , ์ด๋ฅผ ํตํด ์ ํ๊ฒฝ์์์ ํธํ์ฑ์ ๊ฒ์ฆํ ์ ์์ต๋๋ค. ์ด ๊ณผ์ ์ ๋ฐฐํฌ ์ ์ถฉ๋์ ๋ฐฉ์งํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. - CI/CD ํ์ดํ๋ผ์ธ(์ง์์ ํตํฉ/๋ฐฐํฌ): CI/CD ํ์ดํ๋ผ์ธ์์
Pipfile.lock์ ์ฃผ๊ธฐ์ ์ผ๋ก ๊ฐฑ์ ํ์ฌ ํ๋ก์ ํธ์ ์ข ์์ฑ์ด ํญ์ ์ต์ ์ํ๋ก ์ ์ง๋๊ณ , ๋ฐฐํฌ ์์ ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ง ์๋๋ก ํ ์ ์์ต๋๋ค.
- ์ข
์์ฑ ํ์ผ(Pipfile)์ ์๋ ๋ณ๊ฒฝ: ๊ฐ๋ฐ์๊ฐ
6. ํ๋ก์ ํธ๋ณ ๊ฐ์ ํ๊ฒฝ ์ค์
- ๊ฐ์ ํ๊ฒฝ์ ํ๋ก์ ํธ ๋๋ ํ ๋ฆฌ์ ๊ธฐ๋ฐํ์ฌ ์๋์ผ๋ก ์ด๋ฆ์ด ์์ฑ๋๋ฉฐ, ๊ด๋ฆฌ๋
~/.local/share/virtualenvs๋๋ ํ ๋ฆฌ์์ ์ด๋ฃจ์ด์ง๋๋ค. -
TensorFlow์ PyTorch ํ๋ก์ ํธ ์์:
1 2 3 4 5 6
# Tensorflow_ObjectDetection ํ๋ก์ ํธ ์์ฑ mkdir Tensorflow_ObjectDetection cd Tensorflow_ObjectDetection pipenv --python 3.9.1 pipenv install tensorflow pipenv shell # ํ๋ก์ ํธ ๊ฐ์ํ๊ฒฝ ์คํ
1 2 3 4 5 6
# PyTorch_AnomalyDetection ํ๋ก์ ํธ ์์ฑ mkdir PyTorch_AnomalyDetection cd PyTorch_AnomalyDetection pipenv --python 3.9.1 pipenv install torch torchvision pipenv shell # ํ๋ก์ ํธ ๊ฐ์ํ๊ฒฝ ์คํ
๐ก Pipfiles(Pipfile, Pipfile.lock)์ Git repository์ ์ถ๊ฐํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ๋ง์ฝ ๋ค๋ฅธ์ฌ๋์ด repository์ clone ํ๋ฉด Pipenv์ ํด๋น ์์คํ ์ ์ค์นํ๊ณ
pipenv install๋ฅผ ์ํํ๋ฉด Pipenv๋ ์๋์ผ๋ก Pipfiles๋ฅผ ์ฐพ์์ ์๋ก์ด ๊ฐ์ ํ๊ฒฝ์ ๋ง๋ค๊ณ ํ์ํ ํจํค์ง๋ค์ ์ค์นํฉ๋๋ค.
7. pipenv ๋ช ๋ น์ด
๊ธฐ๋ณธ ๋ช ๋ น์ด
pipenv install: ํ๋ก์ ํธ ์ด๊ธฐํ ๋๋Pipfile์ ๊ธฐ๋ก๋ ๋ชจ๋ ํจํค์ง๋ฅผ ์ค์นํฉ๋๋ค. ํน์ ํจํค์ง๋ฅผ ๋ช ์ํ ๊ฒฝ์ฐ ํด๋น ํจํค์ง๋ฅผ ์ค์นํ๊ณPipfile์ ์ ๋ฐ์ดํธํฉ๋๋ค.pipenv uninstall: ์ง์ ๋ ํจํค์ง๋ฅผ ๊ฐ์ ํ๊ฒฝ์์ ์ ๊ฑฐํ๊ณPipfile์์ ํด๋น ํญ๋ชฉ์ ์ ๊ฑฐํฉ๋๋ค.pipenv lock: ํ์ฌ ๊ฐ์ ํ๊ฒฝ์ ์ค์น๋ ๋ชจ๋ ์์กด์ฑ์Pipfile.lock์ ๊ณ ์ ํฉ๋๋ค. ์ด ํ์ผ์ ์ฌ์ฉํ๋ฉด ๋ค๋ฅธ ํ๊ฒฝ์์ ๋์ผํ ํจํค์ง ์ค์ ์ผ๋ก ํ๊ฒฝ์ ์ฌํํ ์ ์์ต๋๋ค.pipenv graph: ํ์ฌ ์ค์น๋ ์์กด์ฑ์ ๊ทธ๋ํ๋ฅผ ํ์ํฉ๋๋ค. ์ด๋ ํจํค์ง ๊ฐ์ ์์กด ๊ด๊ณ๋ฅผ ์๊ฐ์ ์ผ๋ก ์ดํดํ๋๋ฐ ๋์์ ์ค๋๋ค.
๋ณด์ ๋ฐ ์ ๋ฆฌ ๋ช ๋ น์ด
pipenv check: ์ค์น๋ ํจํค์ง๋ฅผ PyUp Safety๋ฅผ ํตํด ๋ณด์ ์ทจ์ฝ์ ์ด ์๋์ง ๊ฒ์ฌํ๊ณ ,Pipfile์ ๋ช ์๋ PEP 508 ๋ง์ปค์์ ํธํ์ฑ์ ํ์ธํฉ๋๋ค.pipenv clean:Pipfile.lock์ ๋ช ์๋์ง ์์ ๋ชจ๋ ํจํค์ง๋ฅผ ์ ๊ฑฐํฉ๋๋ค. ์ด๋ ๊ฐ์ ํ๊ฒฝ์ ๊นจ๋ํ๊ฒ ์ ์งํ๋ ๋ฐ ์ ์ฉํฉ๋๋ค.
๊ฐ์ ํ๊ฒฝ ๊ด๋ฆฌ ๋ช ๋ น์ด
pipenv shell: ๊ฐ์ ํ๊ฒฝ ๋ด์ ์์ ์์ํฉ๋๋ค. ์ด๋ ๊ฐ๋ฐ ํ๊ฒฝ์ ๊ฐ์ ํ๊ฒฝ์ผ๋ก ํ์ ํ์ฌ ์์ ํ ๋ ์ฌ์ฉ๋ฉ๋๋ค.pipenv --rm: ํ์ฌ ํ๋ก์ ํธ์ ๊ฐ์ ํ๊ฒฝ์ ์ ๊ฑฐํฉ๋๋ค. ์ด ๋ช ๋ น์ ๊ฐ์ ํ๊ฒฝ์ ์์ ํ ์ญ์ ํ์ง๋ง,Pipfile๊ณผPipfile.lock์ ์ ์ง๋ฉ๋๋ค.
ํจํค์ง ๋๊ธฐํ ๋ฐ ์ ๋ฐ์ดํธ ๋ช ๋ น์ด
pipenv sync:Pipfile.lock์ ๋ช ์๋ ์ ํํ ํจํค์ง ๋ฒ์ ์ ์ค์นํฉ๋๋ค. ์ด๋ ํ๋ก์ ํธ๋ฅผ ์๋ก ์์ํ๊ฑฐ๋ ๋ค๋ฅธ ๊ฐ๋ฐ์์ ํ๊ฒฝ์ ๋๊ธฐํํ ๋ ์ ์ฉํฉ๋๋ค.pipenv update:pipenv lock์ ์คํํ์ฌ ๋ชจ๋ ํจํค์ง๋ฅผ ์ต์ ๋ฒ์ ์ผ๋ก ์ ๋ฐ์ดํธํ๊ณ , ์ด์ด์pipenv sync๋ฅผ ์คํํ์ฌ ์ด๋ฌํ ๋ณ๊ฒฝ ์ฌํญ์ ์ ์ฉํฉ๋๋ค.
์ถ๊ฐ ์ ์ฉํ ์ต์
--verbose: ์์ธํ ์ถ๋ ฅ ๋ชจ๋๋ก ์ ํํฉ๋๋ค. ๋ช ๋ น ์คํ ์ค ๋ฐ์ํ๋ ๋ด๋ถ ๊ณผ์ ์ ๋ ์์ธํ ๋ณผ ์ ์์ต๋๋ค.--support: ๋ฌธ์ ํด๊ฒฐ์ ์ํ ์ง๋จ ์ ๋ณด๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ด๋ GitHub ์ด์ ๋ฑ์์ ๋ฌธ์ ๋ฅผ ๋ณด๊ณ ํ ๋ ์ ์ฉํ๊ฒ ์ฌ์ฉ๋ ์ ์์ต๋๋ค.--python [version]: ๊ฐ์ ํ๊ฒฝ์ ์์ฑํ ๋ ์ฌ์ฉํ ํน์ ํ์ด์ฌ ๋ฒ์ ์ ์ง์ ํฉ๋๋ค.--clear: pipenv, pip, ๋ฐ pip-tools ๊ด๋ จ ์บ์๋ฅผ ๋ชจ๋ ์ง์๋๋ค. ์ด๋ ๋ฌธ์ ํด๊ฒฐ ์ ์ ์ฉํ๊ฒ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ ์ฒจ1
๐ค ๊ทธ๋ ๋ค๋ฉด ๊ธฐ์กด pip ์ค์ -U ๋๋ -q ํ๋ผ๋ฏธํฐ๊ฐ ๋ถ์ ๊ฒ๋ค์ ์ด๋ป๊ฒ ํ ๊น์?
1 2 3 4 pip install -q -U bitsandbytes pip install -q -U git+https://github.com/huggingface/transformers.git pip install -q -U git+https://github.com/huggingface/peft.git pip install -q -U git+https://github.com/huggingface/accelerate.gitpipenv๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ข ์์ฑ ๊ด๋ฆฌ๋ฅผ ์ํด ํญ์ ๊ฐ๋ฅํ ์ต์ ๋ฒ์ ์ ํจํค์ง๋ฅผ ์ค์นํ๋ ค๊ณ ํ๊ธฐ ๋๋ฌธ์ -U๊ฐ ์์ต๋๋ค. pip โ pipenv๋ก ๋ณ๊ฒฝ๋ง ํด์ฃผ๋ฉด ์๋ฃ! ๐ฉ
1 2 3 pipenv install -q git+https://github.com/huggingface/transformers.git pipenv install -q git+https://github.com/huggingface/peft.git pipenv install -q git+https://github.com/huggingface/accelerate.git
โ๏ธ (์ฐธ๊ณ ) pip ๋ช ๋ น์ด์์ ์ฌ์ฉํ๋ -q์ -U ์ต์ ์ ์๋ฏธ
-q (Quiet) :
-q์ต์ ์ โquietโ ๋ชจ๋๋ก ์ค์น๋ฅผ ์ํํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์ฆ, ๋ช ๋ น์ด ์คํ ์ ์ถ๋ ฅ๋๋ ๋ฉ์์ง์ ์์ ์ค์ฌ์ค๋๋ค. ๋ณดํต์ ์ค์น ๊ณผ์ ์ค์ ์์ธํ ์ ๋ณด๋ฅผ ์ต์ํํ๊ณ ์ถ์ ๋ ์ฌ์ฉํฉ๋๋ค. -qq๋ก ์ง์ ํ๋ฉด ์ถ๋ ฅ์ ๋์ฑ ์ค์ผ ์ ์์ต๋๋ค.-U (Upgrade) :
-U์ต์ ์ โupgradeโ์ ์ฝ์๋ก, ์ง์ ๋ ํจํค์ง๋ฅผ ์ต์ ๋ฒ์ ์ผ๋ก ์ ๊ทธ๋ ์ด๋ํ๋ผ๋ ์ง์์ ๋๋ค. ๋ง์ฝ ํด๋น ํจํค์ง๊ฐ ์ด๋ฏธ ์์คํ ์ ์ค์น๋์ด ์๋ค๋ฉด, -U ์ต์ ์ ํตํด ์ต์ ๋ฒ์ ์ผ๋ก ์ ๋ฐ์ดํธํ ์ ์์ต๋๋ค. ํจํค์ง๊ฐ ์ค์น๋์ด ์์ง ์์ ๊ฒฝ์ฐ์๋ ์๋ก ์ค์นํฉ๋๋ค.
์ ์ฒจ2
๋ง์ฝ, pip install์ ์ฌ์ฉํ์ฌ ํจํค์ง๋ฅผ ์ค์นํ์ง๋ง pipenv ํ๊ฒฝ์์ ๊ด๋ฆฌํ๊ณ ์ถ์ ๊ฒฝ์ฐ, Pipfile์ ํด๋น ํจํค์ง๋ฅผ ๋ช
์์ ์ผ๋ก ์ถ๊ฐํ๋ ๊ณผ์ ์ด ํ์ํฉ๋๋ค. ์ด๋ pipenv๊ฐ ํ๋ก์ ํธ์ ์ข
์์ฑ์ Pipfile๊ณผ Pipfile.lock์ ํตํด ๊ด๋ฆฌํ๊ธฐ ๋๋ฌธ์
๋๋ค. ๋ค์์ pipfile์ pip์ผ๋ก ์ค์นํ ํจํค์ง๋ฅผ ์ถ๊ฐํ๋ ๋ฐฉ๋ฒ์ ๋จ๊ณ๋ณ๋ก ์ค๋ช
ํฉ๋๋ค.
1. Pipfile ์ด๊ธฐ
ํ๋ก์ ํธ ๋๋ ํ ๋ฆฌ์์ Pipfile์ ํ
์คํธ ํธ์ง๊ธฐ๋ก ์ด์ด์ค๋๋ค. Pipfile์ ์ผ๋ฐ์ ์ผ๋ก ํ๋ก์ ํธ์ ๋ฃจํธ ๋๋ ํ ๋ฆฌ์ ์์นํฉ๋๋ค.
2. ํจํค์ง ์ถ๊ฐ
Pipfile์ [packages] ์น์
์ ์ถ๊ฐํ๊ณ ์ ํ๋ ํจํค์ง๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ๊ธฐ์ฌํฉ๋๋ค. ์ฌ๊ธฐ์ ํจํค์ง ์ด๋ฆ๊ณผ ์ํ๋ ๋ฒ์ ๊ท์น์ ์ง์ ํ ์ ์์ต๋๋ค. *๋ ์ต์ ๋ฒ์ ์ ์๋์ผ๋ก ์ ํํ๋ผ๋ ์๋ฏธ์
๋๋ค:
1
2
3
4
[packages]
requests = "*" # ์ต์ ๋ฒ์ ์ ์ฌ์ฉํ๊ณ ์ ํ ๋
flask = "==1.1.2" # ํน์ ๋ฒ์ ์ ๋ช
์ํ๊ณ ์ ํ ๋
numpy = ">=1.18.5" # ์ต์ ๋ฒ์ ์๊ตฌ์ฌํญ์ ๋ช
์ํ๊ณ ์ ํ ๋
3. Pipfile.lock ์
๋ฐ์ดํธ
์๋์ผ๋ก Pipfile์ ํธ์งํ ํ, Pipfile.lock์ ์
๋ฐ์ดํธํด์ผ ์ข
์์ฑ์ด ์ฌ๋ฐ๋ฅด๊ฒ ๋ฐ์๋ฉ๋๋ค. ํฐ๋ฏธ๋์์ ๋ค์ ๋ช
๋ น์ ์คํํฉ๋๋ค. ์ด ๋ช
๋ น์ Pipfile์ ๋ณ๊ฒฝ์ฌํญ์ ๋ฐํ์ผ๋ก Pipfile.lock์ ์๋กญ๊ฒ ์์ฑํฉ๋๋ค:
1
pipenv lock
4. ํจํค์ง ์ค์น
์์ ๋ Pipfile์ ๋ฐํ์ผ๋ก ํ์ํ ํจํค์ง๋ฅผ ์ค์นํ๋ ค๋ฉด ๋ค์ ๋ช
๋ น์ ์ฌ์ฉํฉ๋๋ค. ์ด ๋ช
๋ น์ Pipfile์ ๋ช
์๋ ๋ชจ๋ ํจํค์ง๋ฅผ ์ค์นํ๊ณ , Pipfile.lock๊ณผ ์ผ์น์ํต๋๋ค:
1
pipenv install
์ฃผ์์ฌํญ
- ๋ฒ์ ํธํ์ฑ: ํจํค์ง ๋ฒ์ ์ ์๋์ผ๋ก ์ง์ ํ ๋๋ ํธํ์ฑ์ ๊ณ ๋ คํด์ผ ํฉ๋๋ค. ์ค์นํ๋ ค๋ ํจํค์ง๊ฐ ํ๋ก์ ํธ์ ์ด๋ฏธ ์๋ ๋ค๋ฅธ ํจํค์ง์ ํธํ๋๋์ง ํ์ธํด์ผ ํฉ๋๋ค.
- ๋ฌธ๋ฒ ์ค๋ฅ:
Pipfile์ ํธ์งํ ๋ ๋ฌธ๋ฒ์ ์ ํํ๊ฒ ์ง์ผ์ผ ํฉ๋๋ค. TOML ๋ฌธ๋ฒ ์ค๋ฅ๋pipenv๋ช ๋ น์ ์คํํ ๋ ๋ฌธ์ ๋ฅผ ์ผ์ผํฌ ์ ์์ต๋๋ค.
์ค๋๋ ๊ธด ๊ธ ์ฝ์ด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค โ