์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- AWS
- ํ ์คํธ๋ง์ด๋
- ํ์ด์ฌ
- ๋ฐ์ดํฐ ๋ถ์
- ํ๋ธ๋ก
- tableau
- AI
- react
- ์์ฐ์ด์ฒ๋ฆฌ
- ๋น ๋ฐ์ดํฐ
- ์ธ๊ณต์ง๋ฅ
- ์๊ณ ๋ฆฌ์ฆ
- nlp
- ๋ฐฑ์ค
- erp
- ํ๋ธ๋ฃจ
- ์ฝํ
- ์ฝ๋ฉํ ์คํธ
- ์๋ง์กด์น์๋น์ค
- github
- ์๋ฐ์คํฌ๋ฆฝํธ
- DFS
- ํ ์คํธ๋ถ์
- sap
- ๋ฐ์ดํฐ๋ถ์
- Git
- ๋ฅ๋ฌ๋
- abap
- ๊นํ๋ธ
- ๋ฆฌ์กํธ
- Today
- Total
Hey Tech
[Python] pipenv ๋ฑ์ฅ๋ฐฐ๊ฒฝ, ์ค์น, ํจํค์ง ๊ด๋ฆฌ ๋ฐฉ๋ฒ ๋ณธ๋ฌธ
[Python] pipenv ๋ฑ์ฅ๋ฐฐ๊ฒฝ, ์ค์น, ํจํค์ง ๊ด๋ฆฌ ๋ฐฉ๋ฒ
Tony Park (ํ ๋) 2022. 3. 2. 08:12๐ญ ํฌ์คํ ๊ฐ์
pipenv๋ ํ์ด์ฌ์์ ๊ณต์์ผ๋ก ๊ถ์ฅํ๋ ํจํค์ง ๊ด๋ฆฌ ํด๋ก์จ ๋ฌด์๋ณด๋ค ํธ๋ฆฌํ๊ณ ์์ ์ ์ผ๋ก ํจํค์ง ๊ด๋ฆฌ๊ฐ ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ ๊ฐ์ํ๊ฒฝ ์ฌ์ฉ ์ ๊ฐ์ฅ ์ถ์ฒํ๋ ํด์ ๋๋ค. ๋ณธ ํฌ์คํ ์์๋ pipenv์ ๋ฑ์ฅ ๋ฐฐ๊ฒฝ๊ณผ ์ฅ์ ๋ถํฐ ์ค์นํ๊ณ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ๊น์ง ์์๋ด ๋๋ค.
๐ ๋ชฉ์ฐจ
1. pipenv ๋ฑ์ฅ ๋ฐฐ๊ฒฝ
1.1. Summary
1.2. ์์ธ ์ค๋ช
1.2.1. pip
1.2.2. ๊ฐ์ํ๊ฒฝ ๋ชจ๋
2. pipenv ์๊ฐ
3. pipenv ์ค์น
4. ๊ฐ์ํ๊ฒฝ ์์ฑ
5. ๊ฐ์ํ๊ฒฝ ์คํ
6. ๊ฐ์ํ๊ฒฝ์์ ์ฃผํผํฐ ๋ ธํธ๋ถ ์คํ
7. Pipfile ํ์ผ ์๊ฐ
8. ํจํค์ง ์ค์น
9. Pipfile.lcok ํ์ผ ์๊ฐ
10. ๊ฐ์ํ๊ฒฝ ๋นํ์ฑํ
11. ๊ฐ์ํ๊ฒฝ ์ญ์
12. pipenv ๋ชจ๋ ๊ธฐ๋ฅ
1. pipenv ๋ฑ์ฅ ๋ฐฐ๊ฒฝ
1.1. Summary
๊ฒฐ๋ก ๋ถํฐ ๋ง์๋๋ฆฌ์๋ฉด, pipenv๋ pip์ ๊ฐ์ํ๊ฒฝ ๋ชจ๋์ 2๊ฐ์ง ๋ฌธ์ ์ ์ ๋ณด์ํ๊ธฐ ์ํด ๋ฑ์ฅํ์์ต๋๋ค.
1) pip๋ฅผ ํ์ฉํ์ฌ ํจํค์ง๋ฅผ ์ผ์ผ์ด ์ค์นํ๊ธฐ ๋ฒ๊ฑฐ๋กญ๋ค.
2) ๊ธฐ์กด ๊ฐ์ํ๊ฒฝ ๋ชจ๋๋ค์ ํจํค์ง ๋ฒ์ ๊ด๋ฆฌ ๋ฐฉ๋ฒ์ ํญ์ ์์ ์ ์ธ ๋ฒ์ ๊ด๋ฆฌ๋ฅผ ๋ณด์ฅํ์ง ์๋๋ค.
1.2. ์์ธ ์ค๋ช
๊ทธ๋ผ ์ด์ ์กฐ๊ธ ๋ ์์ธํ pipenv ๋ฑ์ฅ ๋ฐฐ๊ฒฝ์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค. ํ์ด์ฌ์ ์ฌ์ฉํ๋ ค๋ฉด ๋ฐ๋์ 2๊ฐ์ง ํด์ธ pip์ ๊ฐ์ํ๊ฒฝ์ ์ฌ์ฉํฉ๋๋ค. ๊ฐ๊ฐ์ ๊ฐ๋ ๊ณผ ๋ฌธ์ ์ ์ ๋ํด ์์๋ด ๋๋ค.
1.2.1. pip
๋จผ์ , pip๋ ํ์ด์ฌ ํจํค์ง ์ค์น๋ฅผ ์ํด ์ฌ์ฉํ๋ ํด์ ๋๋ค. pip๋ก ํจํค์ง๋ฅผ ์ค์นํ ๋๋ 2๊ฐ์ง ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ์ฒซ ๋ฒ์งธ ๋ฌธ์ ์ ์ ํ๋ก์ ํธ๋ณ๋ก ํจํค์ง ๋ฒ์ ๊ด๋ฆฌ๊ฐ ์ด๋ ต๋ค๋ ๊ฒ์ ๋๋ค. ํ์ด์ฌ์ ์ธํฐํ๋ฆฌํฐ ๋ฒ์ ๋ง๋ค ๊ฐ์ ํจํค์ง๋ฅผ ๊ณต์ ํฉ๋๋ค. ๋ฐ๋ผ์ ๊ฐ์ ์ธํฐํ๋ฆฌํฐ ๋ฒ์ ์ ์ฌ์ฉํ๋ ๋ชจ๋ ํ๋ก์ ํธ๋ ๊ฐ์ ๋ฒ์ ์ ํจํค์ง๋ฅผ ์ฌ์ฉํ ์๋ฐ์ ์๊ธฐ ๋๋ฌธ์ ์ฌ๋ฌ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ ๋ฐ ์ด๋ ค์์ด ์์ต๋๋ค. ๋์ฑ ์์ธํ ์ค๋ช ์ ์ด๊ณณ์ ์ฐธ๊ณ ํด ์ฃผ์ธ์. ๋ ๋ฒ์งธ ๋ฌธ์ ์ ์ ํจํค์ง ์ค์น์ ๋ฒ๊ฑฐ๋ก์์ ๋๋ค. ํ๋ก์ ํธ๋ฅผ ์์ํ ๋๋ง๋ค ์ฌ๋ฌ ํจํค์ง๋ฅผ ์ผ์ผ์ด ์ค์นํ๋ ๊ฒ์ ์ฌ๊ฐ ๋ฒ๊ฑฐ๋กญ๊ณ ๋ถํ์ํ ์๊ฐ ์๋ชจ๋ฅผ ์ ๋ฐํฉ๋๋ค.
1.2.2. ๊ฐ์ํ๊ฒฝ ๋ชจ๋
pip๋ง์ ํ์ฉํ ํจํค์ง ๊ด๋ฆฌ์ ๋ฌธ์ ์ ์ ํด๊ฒฐํ๊ธฐ ์ํด ๊ฐ์ํ๊ฒฝ ๋ชจ๋์ด ๋ฑ์ฅํฉ๋๋ค. ๊ฐ์ ํ๊ฒฝ์ ํ๋ก์ ํธ๋ง๋ค ๊ฒฉ๋ฆฌ๋ ํ๊ฒฝ(์ฆ, ๊ฐ์ ํ๊ฒฝ)์ผ๋ก์จ ํ๋ก์ ํธ๋ณ๋ก ํจํค์ง ๊ด๋ฆฌ๊ฐ ๊ฐ๋ฅํฉ๋๋ค. ์๋ฅผ ๋ค์ด, Python 3.7.4 ๋ฒ์ ์ ์ฌ์ฉํ๋ A, B ํ๋ก์ ํธ๊ฐ ์๋ค๊ณ ๊ฐ์ ํ๊ฒ ์ต๋๋ค. ๊ฐ์ํ๊ฒฝ์ ์ฌ์ฉํ๋ฉด A ํ๋ก์ ํธ์ pandas ํจํค์ง๋ 1.4.1 ๋ฒ์ ์ ์ฌ์ฉํ๊ณ , B ํ๋ก์ ํธ์์๋ 1.4.0 ๋ฒ์ ์ด pandas๋ฅผ ๋ฌธ์ ์์ด ์ฌ์ฉํ ์ ์์ต๋๋ค.
ํ์ด์ฌ ๊ฐ์ํ๊ฒฝ ๋ชจ๋์๋ virtualenv, venv, anaconda, pyvenv ๋ฑ์ผ๋ก ๋ค์ํ์ฃ . venv๋ฅผ ์๋ฅผ ๋ค์ด ์ค๋ช
๋๋ฆฌ๊ฒ ์ต๋๋ค. ์์ pip๋ฅผ ํตํด ํ๋ก์ ํธ๋ง๋ค ํจํค์ง๋ฅผ ์ผ์ผ์ด ์ค์นํ๋ ๊ฒ์ ๋ฒ๊ฑฐ๋ก์ธ ๋ฟ๋ง ์๋๋ผ ์๊ฐ ์๋ชจ๊ฐ ํฌ๋ค๊ณ ๋ง์๋๋ ธ์ต๋๋ค. ์ด๋ฅผ ๊ฐ์ ํ๊ธฐ ์ํด venv ๋ชจ๋์๋ requirement.txt๋ผ๋ ํจํค์ง ๋ฒ์ ๊ด๋ฆฌ ๋๊ตฌ๊ฐ ์์ต๋๋ค. ํ๋ก์ ํธ์ ์ค์น๋ ํจํค์ง ๋ชฉ๋ก๊ณผ ๋ฒ์ ์ ํด๋น ํ
์คํธ ํ์ผ์ ์๋์ผ๋ก ๊ธฐ๋กํด ์ฃผ๋ ๋๊ตฌ์
๋๋ค.
ํ์ง๋ง, requirement.txt์ ๋ฒ์ ์ ๋ช
์ํ์ง ์๊ณ ์์ฑํ๋ค๋ฉด, ์ด๋ฅผ ํ์ฉํ์ฌ ํจํค์ง๋ฅผ ์ค์นํ ๋ ๊ฐ์ ๋ฒ์ ์ ํจํค์ง๊ฐ ์ค์น๋๋ ๊ฒ์ ๋ณด์ฅํ์ง ์์ ์ ์์ต๋๋ค. ๊ฒฐ๊ตญ ํจํค์ง ๋ฒ์ ๊ด๋ฆฌ์ ์์ ์ฑ ๋ฐ ์ ํ์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํด์๋ ํจํค์ง๋ง๋ค ์ ํํ ๋ฒ์ ์ ์ผ์ผ์ด ๊ธฐ๋กํด์ผ ํฉ๋๋ค. ์ด๋ ํจํค์ง ๊ด๋ฆฌ์ ์์ด ๋๋ค์ ๋ฒ๊ฑฐ๋ก์๊ณผ ์๊ฐ ๋ญ๋น๋ฅผ ํด๊ฒฐํ์ง ๋ชปํ ์
์
๋๋ค.
์์ ๊ฐ์ pip์ ๊ฐ์ํ๊ฒฝ ๋ชจ๋์ ๋ฌธ์ ์ ์ ํด๊ฒฐํ๊ธฐ ์ํด pipenv๊ฐ ๋ฑ์ฅํฉ๋๋ค.
2. pipenv ์๊ฐ
pipenv๋ ํ์ด์ฌ์์ ๊ณต์์ผ๋ก ๊ถ์ฅํ๋ ํจํค์ง ๊ด๋ฆฌ ํด์
๋๋ค. pipenv์ ํน์ง์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
1) ํจํค์ง ์ค์น์ ๊ฐ์ ํ๊ฒฝ ์ฌ์ฉ์ ์ํด pip์ ๊ฐ์ ํ๊ฒฝ ๋ชจ๋์ ๋ฐ๋ก ์ธ ํ์๊ฐ ์๋ค.
2) ํจํค์ง ๊ธฐ๋ก ํ์ผ(e.g., venv ๋๋ virtualenv์ requirement.txt)๋ก Pipfile๊ณผ Pipfile.lock์ ์ฌ์ฉํ๋ค.
3) lock ํ์ผ์ ์๋ Hash(=ํ
์คํธ๋ฅผ ์์์ ์ํธํ๋ ํ
์คํธ๋ก ๋ณํ)๋ก ์์ ํ ๋ฒ์ ๊ด๋ฆฌ๊ฐ ๊ฐ๋ฅํ๋ค.
4) Dependency Graph ์๊ฐํ ๊ธฐ๋ฅ ์ ๊ณต(๋ช
๋ น์ด: pipenv graph)
5) ํจํค์ง๋ฅผ ์ค์นํ๋ฉด ์๋์ผ๋ก Pipfile ํ์ผ์ ๋ณ๊ฒฝ์ฌํญ์ด ๋ฐ์๋๋ค.
3. pipenv ์ค์น
pipenv๋ ๋ณ๋๋ก ์ค์นํด์ผ ํฉ๋๋ค.
pip install pipenv
4. ๊ฐ์ํ๊ฒฝ ์์ฑ
๊ฐ์ํ๊ฒฝ์ผ๋ก ์ฌ์ฉํ ํด๋๋ฅผ ๋ง๋ค๊ณ ํด๋น ํด๋ ์์ผ๋ก ์ ๊ทผํฉ๋๋ค.
mkdir ํด๋์ด๋ฆ && cd ํด๋์ด๋ฆ
๊ฐ์ํ๊ฒฝ์ ์์ฑํฉ๋๋ค. ๊ฐ์ํ๊ฒฝ์์ ์ฌ์ฉํ์ค ํ์ด์ฌ ๋ฒ์ ๋ ํจ๊ป ์
๋ ฅํด ์ฃผ์ธ์.
pipenv --python 3.x
5. ๊ฐ์ํ๊ฒฝ ์คํ
๊ฐ์ ํ๊ฒฝ Shell์ ์คํํฉ๋๋ค.
pipenv shell
์๋์ ๊ฐ์ด ํฐ๋ฏธ๋ ํ๋กฌํํธ ์ ๋ ฅ์ฐฝ ๋งจ ์์ ๊ดํธ ์์ ์คํํ ๊ฐ์ํ๊ฒฝ ์ด๋ฆ์ด ๋ํ๋๋ฉด ์ ๋๋ก ์คํ๋ ๊ฒ์ ๋๋ค.
6. ๊ฐ์ํ๊ฒฝ์์ ์ฃผํผํฐ ๋ ธํธ๋ถ ์คํ
๊ฐ์ํ๊ฒฝ์์ ์ฃผํผํฐ ๋ ธํธ๋ถ ๋๋ ์ฃผํผํฐ ๋ฉ์ ์คํํ๋ ๋ฐฉ๋ฒ์ ์๋ ํฌ์คํ ์ ์ฐธ๊ณ ํด ์ฃผ์ธ์!
https://heytech.tistory.com/324
7. Pipfile ํ์ผ ์๊ฐ
Pipfile์ ํด๋น ๊ฐ์ํ๊ฒฝ์ ์ค์น๋ ํ์ด์ฌ ๋ฒ์ , ํจํค์ง๋ณ ์ด๋ฆ๊ณผ ๋ฒ์ ์ ๊ธฐ๋กํฉ๋๋ค. pipenv ๊ฐ์ํ๊ฒฝ์ ์ค์นํ๋ค๋ฉด ํด๋น์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ค์น๋ฉ๋๋ค. ํจํค์ง๋ฅผ ์๋กญ๊ฒ ์ค์นํ๋ฉด Pipfile.lock ํ์ผ์ด ์๊น๋๋ค. ํด๋น ํ์ผ์ ๋ํ ์ค๋ช ์ ์๋ 8๋ฒ ์ฑํฐ์์ ์ค๋ช ํฉ๋๋ค.
8. ํจํค์ง ์ค์น
์ผ๋ฐ์ ์ผ๋ก pipenv ํ๊ฒฝ์์๋ pipenv install ๋ช ๋ น์ด๋ก ํจํค์ง๋ฅผ ์ค์นํฉ๋๋ค.
pipenv install ํจํค์ง๋ช
์๋ฅผ ๋ค์ด, pandas ํจํค์ง๋ฅผ ์ค์นํด ๋ณด๊ฒ ์ต๋๋ค.
pipenv install pandas
pipenv๋ฅผ ํตํด ํจํค์ง๋ฅผ ์ค์นํ ํ, Pipfile์ ์ด์ด๋ณด์๋ฉด packages ๋ฆฌ์คํธ์ ์๋ก์ด ํจํค์ง๊ฐ ์ค์น๋ ๊ฒ์ ํ์ธํ์ค ์ ์์ต๋๋ค.
packages์ dev-packages ๊ฐ์ ์ฐจ์ด
์ ๊น, [packages]์ [dev-packages] ๊ฐ์ ์ฐจ์ด๋ ๋ญ๊น์? ์ด๋ Node.js์์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ด๋ฆฌ์ ์์ด dependencies์ devDependencies ๊ฐ์ ์ฐจ์ด์ ์ ์ฌํฉ๋๋ค. packages(i.e., dependencies)๋ ์ค์ ํ๋ก๊ทธ๋จ์ด ๋์ํ ๋ ๋ฐ๋์ ํ์ํ ํจํค์ง ๋ฆฌ์คํธ๋ก, ํ๋ก๊ทธ๋จ์ ์ค์ ๋ฐฐํฌํ ๋ ๋ฐ๋์ ํฌํจํด์ผ ํ๋ ํจํค์ง ๋ฆฌ์คํธ์
๋๋ค.
๋ค์์ผ๋ก, dev-packages(i.e., devDependencies)๋ ๊ฐ๋ฐ์ด๋ ํ
์คํธ ์ ํ์ํ ํจํค์ง ๋ฆฌ์คํธ์
๋๋ค. ์ฆ, ํ๋ก๊ทธ๋จ์ด ๋์ํ๋ ๋ฐ ์ง์ ์ ์ธ ์ฐ๊ด์ ์์ผ๋ฉฐ, ๊ฐ๋ฐ์ด๋ ํ
์คํธ ์ ์ฌ์ฉ๋๋ ํจํค์ง ๋ฆฌ์คํธ์ด๊ธฐ ๋๋ฌธ์ ํ๋ก๊ทธ๋จ ๋ฐฐํฌ ์ ํด๋น ํจํค์ง๋ ํฌํจ์ํค์ง ์์ต๋๋ค.
์ ๋ฆฌํ์๋ฉด, ํ๋ก๊ทธ๋จ ๋น๋ ์๊ฐ์ ์ค์ด๊ธฐ ์ํด ๊ผญ ํ์ํ ํจํค์ง๋ง ํฌํจ์ํค๊ธฐ ์ํด ํจํค์ง ์ฉ๋๋ฅผ ๊ตฌ๋ถํด ๋์ ๊ฒ์
๋๋ค.
9. Pipfile.lcok ํ์ผ ์๊ฐ
ํจํค์ง๋ฅผ ์๋กญ๊ฒ ์ค์นํ๋ฉด ์๋์ ๊ฐ์ด Pipfile.lock์ด ์๋์ผ๋ก ์์ฑ๋ฉ๋๋ค.
์์ pipenv์ ํน์ง ์ค ํ๋๊ฐ ํจํค์ง ๋ฑ์ ์ ๋ณด๋ฅผ ์๋์ผ๋ก Hash๋ฅผ ์์ฑํ๊ธฐ ๋๋ฌธ์ ๋ณด์ ์ธก๋ฉด์์ ์์ ์ฑ์ด ์ข๋ค๊ณ ๋ง์๋๋ ธ์ต๋๋ค. ์๋์ ๊ฐ์ด Pipfile.lock ํ์ผ์ ์ด์ด๋ณด์๋ฉด Pipfile๊ณผ ๋ค๋ฅด๊ฒ ํ ์คํธ๊ฐ ์ํธํ๋ ๊ฒ์ ์ ์ ์์ต๋๋ค.
10. ๊ฐ์ํ๊ฒฝ ๋นํ์ฑํ
๊ฐ์ํ๊ฒฝ์ด ํ์ฑํ๋ ์ํ์์ exit์ ์ ๋ ฅํ๋ฉด ๋นํ์ฑํํ ์ ์์ต๋๋ค.
exit
11. ๊ฐ์ํ๊ฒฝ ์ญ์
pipenv ๋ค์ --rm ์ต์ ์ ์ ๋ ฅํ๋ฉด ๊ฐ์ํ๊ฒฝ์ ์ญ์ ํ ์ ์์ต๋๋ค.
pipenv --rm
12. pipenv ๋ชจ๋ ๊ธฐ๋ฅ
pipenv ๋ชจ๋์ ๋ค์ํ๊ณ ์ ์ฉํ ๊ธฐ๋ฅ์ ์ง์ํฉ๋๋ค. ์๋์ ๊ธฐ๋ฅ๊ณผ ์ฌ์ฉ๋ฐฉ๋ฒ์ ๋ํ ๋ฉ๋ด์ผ์ ๊ณต์ ํด ๋๋ฆฝ๋๋ค. ์ฐธ๊ณ ํ์๋ฉด ๋๊ฒ ์ต๋๋ค.
์ค๋์ pipenv์ ๋ฑ์ฅ๋ฐฐ๊ฒฝ, ์ค์น๋ฐฉ๋ฒ ๋ฑ ์ฌ๋ฌ ๊ฐ์ง ํน์ง์ ๋ํด ์์๋ดค์ต๋๋ค.
ํ์ด์ฌ ๊ฐ์ํ๊ฒฝ์ ์ฌ์ฉํ์ ๋ค๋ฉด ๊ณ ๋ฏผ ์์ด pipenv๋ฅผ ์ฌ์ฉํ์๋ ๊ฒ์ ์ถ์ฒ๋๋ฆฝ๋๋ค.
ํฌ์คํ
๋ด์ฉ์ ์ค๋ฅ๊ฐ ์๋ค๋ฉด ์๋์ ๐๐๐ ๋๊ธ ๋จ๊ฒจ์ฃผ์๋ฉด ๊ฐ์ฌ๋๋ฆฌ๊ฒ ์ต๋๋ค.
๊ทธ๋ผ ์ค๋๋ ์ฆ๊ฒ๊ณ ๊ฑด๊ฐํ ํ๋ฃจ ๋ณด๋ด์๊ธธ ๋ฐ๋๋๋ค :)
๊ณ ๋ง์ต๋๋ค.