Pipenv: pipenv๋Š” ํ˜„์žฌ ํ”„๋กœ์ ํŠธ์˜ virtualenv๋ฅผ ์–ด๋–ป๊ฒŒ ์••๋‹ˆ๊นŒ?

์— ๋งŒ๋“  2017๋…„ 10์›” 01์ผ  ยท  47์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: pypa/pipenv

๋ฐฉ๊ธˆ pipenv๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ python ํ”„๋กœ์ ํŠธ๋ฅผ ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์•Œ๊ณ  ์‹ถ์€ ํ•œ ๊ฐ€์ง€๋Š” pipenv๊ฐ€ virtualenv์— ๋Œ€ํ•œ ํ”„๋กœ์ ํŠธ ๋””๋ ‰ํ† ๋ฆฌ์˜ ๋งคํ•‘์„ ์ €์žฅํ•˜๋Š” ์œ„์น˜์ž…๋‹ˆ๋‹ค.

๋ถ„๋ช…ํžˆํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์Œ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

sacjain-macOS:coursera-classification sacjain$ pipenv --venv
/Users/sachinjain/.local/share/virtualenvs/coursera-classification-iTBt6WsT

๋‚˜๋Š” Pipfile๊ณผ Pipfile.lock์„ ํ™•์ธํ–ˆ๊ณ , ์ด ์ •๋ณด๊ฐ€ Pipfile์— ์žˆ์–ด์•ผ ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ–ˆ์ง€๋งŒ ๊ฑฐ๊ธฐ์— ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

Q2. pipenv๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŠน์ • ๋ฒ„์ „์˜ ํŒจํ‚ค์ง€๋ฅผ ์–ด๋–ป๊ฒŒ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

@uranusjr ์ด๊ฒƒ์€ ๋””๋ ‰ํ† ๋ฆฌ์˜ ์ด๋ฆ„์„ ๋ฐ”๊พธ๋ฉด ๋‚ด ํ”„๋กœ์ ํŠธ์˜ virtualenv๊ฐ€ ์†์‹ค๋œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ๋‚˜์œ. ๋””๋ ‰ํ† ๋ฆฌ์˜ ์ด๋ฆ„์„ ๋ฐ”๊พธ๋Š” ๊ฒƒ์€ ์ผ๋ฐ˜์ ์ธ ์‚ฌ์šฉ ์‚ฌ๋ก€์ผ ์ˆ˜ ์žˆ์œผ๋ฉฐ ์‚ฌ์šฉ์ž๋Š” ์ด์— ๋น ์ง€๊ณ  ํ™˜๊ฒฝ์ด ์–ด๋–ป๊ฒŒ ์ž‘๋™์„ ๋ฉˆ์ท„๋Š”์ง€ ๊ถ๊ธˆํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ ์ˆ˜์ •ํ•˜๊ณ  Pipfile์— ํ•ญ๋ชฉ์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๋˜๋Š” ๋‹ค๋ฅธ .pipenv ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด ๊ฐ ํ”„๋กœ์ ํŠธ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์ด๋Ÿฌํ•œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

๋‹น์‹ ์€ ๋ฌด์—‡์„ ์ œ์•ˆํ•ฉ๋‹ˆ๊นŒ?

๋‘ ์งˆ๋ฌธ์— ๋ชจ๋‘ ๋‹ตํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

๋ชจ๋“  47 ๋Œ“๊ธ€

virtualenv์˜ ์ด๋ฆ„์€ ํ”„๋กœ์ ํŠธ์˜ ๋ฃจํŠธ ๋””๋ ‰ํ„ฐ๋ฆฌ ์ด๋ฆ„์— ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ์— ๋Œ€ํ•œ ์ „์ฒด ๊ฒฝ๋กœ์˜ ํ•ด์‹œ๋ฅผ ๋”ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ํ”„๋กœ์ ํŠธ๋ฅผ ์ด๋™ํ•˜์ง€ ์•Š๋Š” ํ•œ ๊ณ ์œ ํ•˜๊ณ  ์˜ˆ์ธก ๊ฐ€๋Šฅํ•œ ์ด๋ฆ„์ด ๋ณด์žฅ๋ฉ๋‹ˆ๋‹ค. (AFAICT ์ด ์ด๋ฆ„ ์ƒ์„ฑ ๋…ผ๋ฆฌ๋Š” ์˜์กดํ•ด์„œ๋Š” ์•ˆ ๋˜๋Š” ๊ตฌํ˜„ ์„ธ๋ถ€ ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค.)

ํŒจํ‚ค์ง€์˜ ํŠน์ • ๋ฒ„์ „์„ ์„ค์น˜ํ•˜๋ ค๋ฉด pip ๋ฐ requirements.txt์™€ ๋™์ผํ•œ ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค(์˜ˆ: pipenv install django==1.11.0 .

@uranusjr ์ด๊ฒƒ์€ ๋””๋ ‰ํ† ๋ฆฌ์˜ ์ด๋ฆ„์„ ๋ฐ”๊พธ๋ฉด ๋‚ด ํ”„๋กœ์ ํŠธ์˜ virtualenv๊ฐ€ ์†์‹ค๋œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ๋‚˜์œ. ๋””๋ ‰ํ† ๋ฆฌ์˜ ์ด๋ฆ„์„ ๋ฐ”๊พธ๋Š” ๊ฒƒ์€ ์ผ๋ฐ˜์ ์ธ ์‚ฌ์šฉ ์‚ฌ๋ก€์ผ ์ˆ˜ ์žˆ์œผ๋ฉฐ ์‚ฌ์šฉ์ž๋Š” ์ด์— ๋น ์ง€๊ณ  ํ™˜๊ฒฝ์ด ์–ด๋–ป๊ฒŒ ์ž‘๋™์„ ๋ฉˆ์ท„๋Š”์ง€ ๊ถ๊ธˆํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ ์ˆ˜์ •ํ•˜๊ณ  Pipfile์— ํ•ญ๋ชฉ์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๋˜๋Š” ๋‹ค๋ฅธ .pipenv ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด ๊ฐ ํ”„๋กœ์ ํŠธ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์ด๋Ÿฌํ•œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

๋‹น์‹ ์€ ๋ฌด์—‡์„ ์ œ์•ˆํ•ฉ๋‹ˆ๊นŒ?

๋‘ ์งˆ๋ฌธ์— ๋ชจ๋‘ ๋‹ตํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

@sachinjain024๋‹˜ , ๋กœ์ปฌ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ํŒŒ์ผ์— ๋Œ€ํ•ด ๋ช‡ ๊ฐ€์ง€ ๋…ผ์˜๋ฅผ ํ–ˆ์ง€๋งŒ ํ˜„์žฌ๋กœ์„œ๋Š” pipenv๊ฐ€ ์ง€์›ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ด๋ผ๋Š” ๊ด€๋ฆฌ์ž์˜ ํ•ฉ์˜๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

ํ”„๋กœ์ ํŠธ๋ฅผ ์‹๋ณ„ํ•˜๋Š” ๋””๋ ‰ํ† ๋ฆฌ ๊ฒฝ๋กœ๋Š” ์ด๋ฆ„์ด ๊ฐ™์€ ํ”„๋กœ์ ํŠธ ๋˜๋Š” ๋™์ผํ•œ ํ”„๋กœ์ ํŠธ์˜ ์—ฌ๋Ÿฌ ๋ณต์‚ฌ๋ณธ์ด ํ™˜๊ฒฝ ์ƒํƒœ๋ฅผ ์‹ค์ˆ˜๋กœ ๋ฎ์–ด์“ฐ๋Š” ์›์ธ์ด ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ดˆ๊ธฐ์— ๊ตฌํ˜„๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์‹ค์ œ๋กœ ์ž‘์—…์„ ์กฐ์šฉํžˆ ๋ฎ์–ด์“ฐ๋Š” ๊ฒƒ๋ณด๋‹ค ์œ„์น˜๊ฐ€ ํ™˜๊ฒฝ์˜ ์ผ๋ถ€์ธ ๋ฌธ์ œ๋ฅผ ๊ฒช๋Š” ์‚ฌ๋žŒ์ด ํ›จ์”ฌ ์ ์Šต๋‹ˆ๋‹ค. Pipenv๋Š” ๊ฒฐ๊ตญ ๋ฐฐํฌ ๊ด€๋ฆฌ ๋„๊ตฌ์ด๋ฏ€๋กœ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ด๋™ํ•˜๋Š” ๊ฒƒ์€ ํ•˜๋‚˜์˜ ๋ช…๋ น ์ˆ˜์ •์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

@nateprewitt ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์‰ฌ์šด ๊ตฌํ˜„์œผ๋กœ ๋น ๋ฅด๊ฒŒ ์ด๋™ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๋‚˜์ค‘ ๋‹จ๊ณ„์—์„œ ํ”„๋กœ์ ํŠธ ์ด๋ฆ„์„ ๋ฐ”๊พธ๋ฉด ๋‚ด ํ™˜๊ฒฝ์ด ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค.

์ด ์ƒํ™ฉ์—์„œ ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

  1. ํ™˜๊ฒฝ์„ ์žฌ์„ค์ •ํ•˜๊ธฐ ์‰ฝ๋„๋ก ํŒจํ‚ค์ง€ ์ •๋ณด๊ฐ€ ์žˆ๋Š” Pipfile์ด ์ด๋ฏธ ์žˆ์œผ๋ฏ€๋กœ ํ™˜๊ฒฝ์„ ์žฌ์„ค์ •ํ•˜์‹ญ์‹œ์˜ค.
  2. ์–ด๋–ป๊ฒŒ ๋“  virtualenv ๋””๋ ‰ํ† ๋ฆฌ์˜ ์ด๋ฆ„๋„ ๋ฐ”๊พธ์‹ญ์‹œ์˜ค.
  3. ???

์ด ๊ฒฝ์šฐ ๋ฌด์—‡์„ ์ œ์•ˆํ•ฉ๋‹ˆ๊นŒ? ์•ž์œผ๋กœ ์ด๋Ÿฐ ์ƒํ™ฉ์— ์ฒ˜ํ•  ๊ฒฝ์šฐ๋ฅผ ๋Œ€๋น„ํ•˜์—ฌ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.

pew cp ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ธฐ์กด virtualenv๋ฅผ ์‰ฝ๊ฒŒ ๋ณต์‚ฌํ•  ์ˆ˜ ์žˆ์ง€๋งŒ 1. ๋” "์ •๊ทœ์ ์ธ" ๋ฐฉ๋ฒ•์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

@sachinjain024 , ํ”„๋กœ์ ํŠธ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ด๋™ํ•ด์•ผ ํ•  ๋•Œ๋งˆ๋‹ค pipenv install ๋งŒ ์‹คํ–‰ํ•˜๋ฉด ์ž‘๋™ ์ƒํƒœ๋กœ ๋Œ์•„๊ฐ‘๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ƒˆ ํ•ด์‹œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ™˜๊ฒฝ์„ ๋งŒ๋“ค๊ณ  ์ด์ „ ์„ค์น˜์™€ ๋™์ผํ•˜๊ฒŒ ์ž ๊ธˆ ํŒŒ์ผ์˜ ๋ชจ๋“  ํ•ญ๋ชฉ์„ ๋‹ค์‹œ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

์ด ์ž‘์—…์„ ์ž์ฃผ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ pew rm old_project-a3de90 ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ •๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

pipenv ์™ธ๋ถ€์—์„œ ๊ฐ€์ƒ ํ™˜๊ฒฝ์„ ์ˆ˜์ •ํ•˜์ง€ ์•Š๋Š” ํ•œ pew cp ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ "๋ฌดํšจ ๋ณด์ฆ" ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ๊ณ ๋ คํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ์•ˆ์ •์ ์œผ๋กœ ์„ค๋ช…ํ•  ์ˆ˜ ์—†๋Š” ๋ชจ๋“  ์ข…๋ฅ˜์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

@nateprewitt @uranusjr ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ด ํ‹ฐ์ผ“์„ ๋‹ซ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์ง€๊ธˆ๊นŒ์ง€ pipenv ๋‚˜์˜จ ์ตœ์•…์˜ ์•„์ด๋””์–ด ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ์ด์œ ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ €๋Š” Python์ด ๋งŽ์€ ๋‚ด๋ถ€ ํ”„๋กœ์ ํŠธ์˜ ํ…Œ์ŠคํŠธ ์ž๋™ํ™”์— ์‚ฌ์šฉ๋˜๋Š” ํšŒ์‚ฌ์—์„œ ์ผํ•ฉ๋‹ˆ๋‹ค. ํ•œ ํ…Œ์Šคํ„ฐ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๊ทธ ์ค‘ 12๊ฐœ์—์„œ ์ž‘์—…ํ•ฉ๋‹ˆ๋‹ค. ๊ด€๋ก€์— ๋”ฐ๋ผ ํ”„๋กœ์ ํŠธ์˜ ๋ชจ๋“  ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋Š” tests ๋””๋ ‰ํ† ๋ฆฌ์— ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๊ฐ ํ…Œ์Šคํ„ฐ๊ฐ€ ์ด์ œ ~/.local/share/virtualenvs/tests-hKjFddnZ ์™€ ๊ฐ™์€ ๊ฐ€์ƒ ํ™˜๊ฒฝ์„ ๊ฐ–๊ฒŒ ๋˜์—ˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€์ƒ ํ™˜๊ฒฝ์„ ์ „ํ™˜ํ•˜๋Š” ๊ฒƒ์„ ์žŠ๋Š” ๊ฒƒ์€ ์ธ๊ฐ„์˜ ๋ณธ์„ฑ์ด๋ฏ€๋กœ ํ•ด๋‹น ์›Œํฌ์Šคํ…Œ์ด์…˜์— ์žˆ๋Š” ์‚ฌ๋žŒ์ด ํ•„์š”ํ•œ ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฉฐ์น ๋งˆ๋‹ค ๋‹ค๋ฅธ ์›Œํฌ์Šคํ…Œ์ด์…˜์œผ๋กœ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค. pipenv install . ๊ทธ๋Ÿฌ๋‚˜ ์ฝ”๋“œ์˜ ๊ฐ€์ ธ์˜ค๊ธฐ๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๊ณ ์•„ ๊ฐ€์ƒ ํ™˜๊ฒฝ์€ ์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผ ๋ˆ„์ ๋˜์ง€๋งŒ ๋ชจ๋‘ ์„ค๋ช…์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ์ด๋ฆ„์„ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ํ™˜๊ฒฝ์„ ์‚ญ์ œํ•˜๋Š” ๊ฒƒ์ธ์ง€ ์‹ค์ œ๋กœ ์‚ฌ์šฉ๋˜๋Š” ํ™˜๊ฒฝ์„ ์‚ญ์ œํ•˜๋Š” ๊ฒƒ์ธ์ง€ ์•Œ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์—†์Šต๋‹ˆ๋‹ค. ์ด๋Š” CI์—์„œ ๋งค์ผ ์ˆ˜๋ฐฑ ๊ฐœ๋Š” ์•„๋‹ˆ๋”๋ผ๋„ ์ˆ˜์‹ญ ๊ฐœ์˜ ๊ฐ€์ƒ ํ™˜๊ฒฝ์„ ์ƒ์„ฑํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๋ณธ์งˆ์ ์œผ๋กœ ์ž„์˜์˜ ์ด๋ฆ„์„ ๊ฐ€์ง„ ํ™˜๊ฒฝ์„ ์ถ”์ ํ•  ์ˆ˜ ์žˆ๋Š” ์‚ฌ๋žŒ์€ ์—†๊ณ  ํ™˜๊ฒฝ์ด ๋„ˆ๋ฌด ๋งŽ๊ธฐ ๋•Œ๋ฌธ์— ์ ์–ด๋„ ํ•˜๋ฃจ์— ํ•œ ๋ฒˆ์€ ๋ชจ๋“  ํ™˜๊ฒฝ์„ ์‚ญ์ œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. pipenv ์™€ ์šฐ๋ฆฌ ํšŒ์‚ฌ์˜ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๊ทธ๊ฒƒ์„ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ•œ ์ด ๋งค์šฐ ํ˜„๋ช…ํ•œ ๊ฒฐ์ • ๋•Œ๋ฌธ์— ์šฐ๋ฆฌ๋Š” ๋Œ€๊ธฐ ์‹œ๊ฐ„์— ๋ง‰๋Œ€ํ•œ ๋น„์šฉ์„ ์ง€๋ถˆํ•ฉ๋‹ˆ๋‹ค...

bashrc / ์‰˜ ๊ตฌ์„ฑ์—์„œ export PIPENV_VENV_IN_PROJECT=1 ๋ฅผ ์„ค์ •ํ•˜์‹ญ์‹œ์˜ค.
(๋˜๋Š” $PROJECT/.venv์— ๊ฐ€์ƒ ํ™˜๊ฒฝ์„ ์ƒ์„ฑํ•˜๋„๋ก ์‰˜ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋ณ€๊ฒฝํ•œ ๋‹ค์Œ
pipenv๋Š” ๊ทธ๊ฒƒ์„ ๊ฐ€์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค)
2018๋…„ 3์›” 19์ผ ์›”์š”์ผ ์˜ค์ „ 6์‹œ 28๋ถ„ wvxvw [email protected]์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์ง€๊ธˆ๊นŒ์ง€ pipenv์—์„œ ๋‚˜์˜จ ์ตœ์•…์˜ ์•„์ด๋””์–ด ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ์ด์œ ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ €๋Š” Python์ด ๋งŽ์€ ํ…Œ์ŠคํŠธ ์ž๋™ํ™”์— ์‚ฌ์šฉ๋˜๋Š” ํšŒ์‚ฌ์—์„œ ์ผํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
๋‚ด๋ถ€ ํ”„๋กœ์ ํŠธ. ํ•œ ํ…Œ์Šคํ„ฐ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๊ทธ ์ค‘ 12๊ฐœ์—์„œ ์ž‘์—…ํ•ฉ๋‹ˆ๋‹ค. ์— ์˜ํ•ด
๊ทœ์น™์— ๋”ฐ๋ผ ํ”„๋กœ์ ํŠธ์˜ ๋ชจ๋“  ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋Š” tests๋ผ๋Š” ๋””๋ ‰ํ† ๋ฆฌ์— ์žˆ์Šต๋‹ˆ๋‹ค.
์ด๊ฒƒ์€ ๊ฐ ํ…Œ์Šคํ„ฐ๊ฐ€ ์ด์ œ ๋ชจ๋“  ๊ฐ€์ƒ ํ™˜๊ฒฝ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
~/.local/share/virtualenvs/tests-hKjFddnZ -
์—„์ฒญ๋‚œ! ๊ฐ€์ƒ ํ™˜๊ฒฝ์„ ์ „ํ™˜ํ•˜๋Š” ๊ฒƒ์„ ์žŠ๋Š” ๊ฒƒ์€ ์ธ๊ฐ„์˜ ๋ณธ์„ฑ์ด๋ฏ€๋กœ,
๋ฉฐ์น ๋งˆ๋‹ค ๋‹ค๋ฅธ ์›Œํฌ์Šคํ…Œ์ด์…˜์œผ๋กœ ์ „ํ™”๋ฅผ ๋ฐ›์Šต๋‹ˆ๋‹ค.
ํ•ด๋‹น ์›Œํฌ์Šคํ…Œ์ด์…˜์—์„œ ํ•„์š”ํ•œ ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด
pipenv install์„ ์‹คํ–‰ํ–ˆ์ง€๋งŒ ์ฝ”๋“œ์˜ ๊ฐ€์ ธ์˜ค๊ธฐ๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ
๊ณ ์•„ ๊ฐ€์ƒ ํ™˜๊ฒฝ์€ ์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผ ์ถ•์ ๋˜์ง€๋งŒ ๋ชจ๋“ 
๊ทธ๋“ค ์ค‘ ์„ค๋ช…ํ•˜๊ธฐ ์–ด๋ ค์šด ์ด๋ฆ„์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ญ์ œํ•˜๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์—†์Šต๋‹ˆ๋‹ค.
์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ํ™˜๊ฒฝ ๋˜๋Š” ์‹ค์ œ๋กœ ์‚ฌ์šฉ๋œ ํ™˜๊ฒฝ. ์ด๊ฒƒ
CI์—์„œ ์ˆ˜๋ฐฑ ๊ฐœ๋Š” ์•„๋‹ˆ๋”๋ผ๋„ ์ˆ˜์‹ญ ๊ฐœ์˜ ๊ฐ€์ƒ ํ™˜๊ฒฝ์„ ์ƒ์„ฑํ•œ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค.
์ผ์ผ. ์•„๋ฌด๋„ ์—†๋Š” ํ™˜๊ฒฝ์„ ์ถ”์ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์€ ์—†์Šต๋‹ˆ๋‹ค.
๋ณธ์งˆ์ ์œผ๋กœ ์ž„์˜์˜ ์ด๋ฆ„์ด ์žˆ๊ณ  ๋„ˆ๋ฌด ๋งŽ์€ ์ด๋ฆ„์ด ์žˆ์œผ๋ฏ€๋กœ
์ ์–ด๋„ ํ•˜๋ฃจ์— ํ•œ ๋ฒˆ์€ ๋ชจ๋‘ ์‚ญ์ œํ•˜์‹ญ์‹œ์˜ค. ์šฐ๋ฆฌ๋Š” ๋Œ€๊ธฐ ์‹œ๊ฐ„์— ๋ง‰๋Œ€ํ•œ ๋น„์šฉ์„ ์ง€๋ถˆํ•ฉ๋‹ˆ๋‹ค.
pipenv์™€ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๋‚ด๋ฆฐ ์ด ๋งค์šฐ ํ˜„๋ช…ํ•œ ๊ฒฐ์ • ๋•๋ถ„์—
๊ทธ๊ฒƒ์„ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ•œ ์šฐ๋ฆฌ ํšŒ์‚ฌ๋Š” ...

โ€”
์ด ์Šค๋ ˆ๋“œ์— ๊ฐ€์ž…ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/pypa/pipenv/issues/796#issuecomment-374211264 ๋˜๋Š” ์Œ์†Œ๊ฑฐ
์Šค๋ ˆ๋“œ
https://github.com/notifications/unsubscribe-auth/ABhjqyABdDHCB8WMm-hJwdkNptVlh8fuks5tf7KBgaJpZM4Pp3kf
.

@jtratner ๊ทธ๋ ‡๋‹ค๋ฉด ๊ฐ€์ƒ ํ™˜๊ฒฝ์„ ์†์œผ๋กœ ๋งŒ๋“ค๋ ค๋ฉด ์™œ pipenv ํ•„์š”ํ•ฉ๋‹ˆ๊นŒ?

๊ฐ€์ƒ ํ™˜๊ฒฝ์€ ๊ทธ ์ž์ฒด๋กœ ์ž‘์—…์ž…๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ณณ์—์„œ ์ ˆ๋ฆ„๋ฐœ์ด์ด๋ฉฐ Windows์—์„œ๋Š” ์†์ƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค(MS Windows์—์„œ๋Š” ๋ชจ๋“  ์œ„์น˜์—์„œ ๊ธฐ๋ณธ ํ™ˆ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ "~"๋ผ๊ณ  ํ•จ). ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ PIP์™€ ๊ฐ€์ƒ ํ™˜๊ฒฝ์„ ๋‹ค์‹œ ์‹คํ–‰ํ•œ๋‹ค๋ฉด ์ „์ž„์ž์˜ ๋ช…๋ฐฑํ•œ ์˜ค๋ฅ˜๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž์Šต๋‹ˆ๋‹ค... ๋Œ€์‹  ์ด ํ˜ผ๋ž€์— ๋น„ํ˜ธํ™˜์„ฑ ๋ ˆ์ด์–ด๊ฐ€ ๊ณฑํ•ด์กŒ์Šต๋‹ˆ๋‹ค.

์ž˜๋ชป๋œ ๊ฐ€์ •์„ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. Pipenv๋Š” virtualenv ๋˜๋Š” pip๋ฅผ ๋‹ค์‹œ ์‹คํ–‰ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๊ทธ๊ฒƒ๋“ค์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค.

@uranusjr ๋…ํ•ด๋ ฅ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ์ฝ”๋“œ๋ฅผ ๋””๋ฒ„๊น…ํ•˜๋Š” ๋ฐ ํ›จ์”ฌ ๋” ๋งŽ์€ ์‹œ๊ฐ„์„ ์†Œ๋น„ํ•˜๊ธฐ ๋•Œ๋ฌธ์— pipenv ๊ฐ€ ๋ฌด์—‡์„ ํ•˜๋Š”์ง€ ์ž˜ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€์ƒ ํ™˜๊ฒฝ๊ณผ PIP๋ฅผ ๋‹ค์‹œ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์€ ํ”„๋กœ์ ํŠธ์˜ ๋ช…์‹œ๋œ ๋ชฉํ‘œ์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์„ ์ˆ˜์ •ํ•˜๋Š” ๋Œ€์‹  "์žˆ๋Š” ๊ทธ๋Œ€๋กœ" ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ•œ ๊ฒƒ์€ pipenv ๋˜ ๋‹ค๋ฅธ ํฐ ์‹ค์ˆ˜์ด๋ฉฐ click ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ๋ชฉ๋ก์€ ๊ณ„์†๋ฉ๋‹ˆ๋‹ค.

๊ฐ€์ƒ ํ™˜๊ฒฝ๊ณผ PIP๋ฅผ ๋‹ค์‹œ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์€ ํ”„๋กœ์ ํŠธ์˜ ๋ช…์‹œ๋œ ๋ชฉํ‘œ์ž…๋‹ˆ๋‹ค.

๋ˆ„๊ฐ€ ์ด๊ฒƒ์„ ์–ด๋””์—์„œ ์ง„์ˆ ํ–ˆ์Šต๋‹ˆ๊นŒ?

๋‚˜๋Š” ๋˜ํ•œ์ด ๋™์ž‘์ด ์ด์ƒํ•˜๋‹ค๋Š” ๊ฒƒ์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. pipenv ๊ฐ€ virtualenv ๋””๋ ‰ํ† ๋ฆฌ์˜ ํ‘œ์ค€ ์ด๋ฆ„์„ ์„ ํƒํ•˜๊ณ  npm ๊ฐ€ node_modules ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹๊ณผ ์œ ์‚ฌํ•œ ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ์— ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋„ฃ์„ ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

@ํ”Œ๋ฆผ export PIPENV_VENV_IN_PROJECT=1 . ๋ฌธ์„œ๋ฅผ ์ฝ์œผ์‹ญ์‹œ์˜ค.

@uranusjr ๋‚˜๋Š” https://docs.pipenv.org ๋ฐ https://docs.pipenv.org/basics/ ๋ฅผ ๋ชจ๋‘ ์ฝ์—ˆ๊ณ , ๋‚ด๊ฐ€ ๋†“์นœ ๊ฒฝ์šฐ๊ฐ€ ์•„๋‹ˆ๋ฉด virtualenv ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์„ค์น˜๋œ ์œ„์น˜๋ฅผ ์–ธ๊ธ‰ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ํ”„๋กœ์ ํŠธ ๋””๋ ‰ํ† ๋ฆฌ์˜ ์ด๋ฆ„์„ ๋ฐ”๊พธ๊ฑฐ๋‚˜ ์ด๋™ํ•˜๋ฉด virtualenv ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋‹ค์‹œ ์ƒ์„ฑํ•ด์•ผ ํ•œ๋‹ค๊ณ  ๊ฒฝ๊ณ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

PIPENV_VENV_IN_PROJECT ๋Š” ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ํฌํ•จ๋œ venv ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ์ธ virtualenv ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— pipenv ๋ผ๋Š” ์ด๋ฆ„์ด ํ˜ผ๋™๋˜๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค.

์ €๋Š” ์ด ํ”„๋กœ์ ํŠธ์— ์ต์ˆ™ํ•ด์ง€๋ฉด์„œ ์ œ๊ฐ€ ๋„˜์–ด์ง„ ๊ฒƒ๋“ค์— ๋Œ€ํ•œ ํ”ผ๋“œ๋ฐฑ์„ ์ œ๊ณตํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

@Flimm ์š”์ ์€ ์ด ์ •๋ณด๋ฅผ ์ถ”์ƒํ™”ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. virtualenvs๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋‹ค๋ฅธ ๋„๊ตฌ๊ฐ€ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ์•Œ๊ณ  ์žˆ๋‹ค๋ฉด virtualenvs์˜ ํด๋”๋ฅผ ์ด๋™ํ•˜๋ฉด ์ฐพ์„ ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์„ ์ด๋ฏธ ์•Œ๊ณ  ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ต์ˆ™ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ์ฒ˜์Œ๋ถ€ํ„ฐ ์ด๊ฒƒ์„ ํŒŒํ—ค์น˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๊ฐ€ virtualenvs๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฑ์—”๋“œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ํ™˜๊ฒฝ ๋ณ€์ˆ˜์˜ ์ด๋ฆ„ ์ง€์ •์€ ์ „์ž๊ฐ€ ๊ทธ๋‹ค์ง€ ์ค‘์š”ํ•˜์ง€ ์•Š๊ณ  ํ›„์ž๊ฐ€ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ์†๊ธฐ์ž…๋‹ˆ๋‹ค. ์„ธ๋ถ€ ์‚ฌํ•ญ์ด ์ค‘์š”ํ•˜์ง€๋งŒ ์ด๊ฒƒ์€ ๋ˆ„๊ตฌ์—๊ฒŒ๋„ ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ค์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์œผ๋ฉฐ, ๊ท€ํ•˜์˜ ์ฃผ๋œ ๋ฐ˜๋Œ€๋Š” ์šฐ๋ฆฌ๊ฐ€ ํŒŒ์ด์ฌ ์‹คํ–‰ ํŒŒ์ผ์„ ํด๋”์— ๋„ฃ๋Š” ๋ฐ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฑ์—”๋“œ๋ฅผ ํ™•์‹ ํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒƒ์— ๊ทผ๊ฑฐํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋ฒ„๊ทธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ๋ณด๊ณ ํ•ด ์ฃผ์‹ญ์‹œ์˜ค. ์šฐ๋ฆฌ๋Š” ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค _๋‹จ์ง€ ์™œ๋ƒํ•˜๋ฉด_.

ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋Š” ๋‹ค์Œ ๋ฌธ์„œ์—์„œ ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. http://pipenv.readthedocs.io/en/latest/advanced/#configuration -with-environment-variables ๊ทธ๊ฒƒ

@techalchemy ๋‹ค๋ฅธ ๋„๊ตฌ๋กœ๋Š” virtualenvwrapper ์™€ ๊ฐ™์€ ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” virtualenvwrapper ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ๋ช‡ ๋…„ ๋™์•ˆ ๊ฐ”๋‹ค. Node/NPM์˜ node_modules ํŒจํ„ด์— ์ต์ˆ™ํ•œ Python ๊ฐœ๋ฐœ์ž์˜ ์ˆ˜๊ฐ€ virtualenvwrapper ๋˜๋Š” pipenv ์ต์ˆ™ํ•œ Python ๊ฐœ๋ฐœ์ž์˜ ์ˆ˜๋ณด๋‹ค ๋งŽ์„ ๊ฒƒ์ด๋ผ๊ณ  ์ถ”์ธกํ•ฉ๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ๋ฌธ์ œ #1919์—์„œ PIPENV_VENV_IN_PROJECT ์˜ ์ด๋ฆ„ ์ง€์ •์—์„œ virtualenv ๋Œ€์‹  venv ์— ๋Œ€ํ•œ ํ˜ผ๋™์„ ์ฃผ๋Š” ์ฐธ์กฐ์— ๋Œ€ํ•ด ์–ธ๊ธ‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋งํ•˜์ž๋ฉด, ๋‚˜๋Š” ๋‹น์‹ ์ด ๋‚ด๊ฐ€ ์ƒ๊ฐํ•˜๋Š” ์œ„์น˜๋ฅผ ์™„์ „ํžˆ ์œ ์ง€ํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.

์–ด์จŒ๋“  ์›๋ž˜ ๋ฌธ์ œ์˜ ์งˆ๋ฌธ์— ๋Œ€ํ•œ ๋‹ต๋ณ€์ด ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด ํ† ๋ก ์„ ์—ฐ์žฅํ•˜๊ณ  ์‹ถ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์›ํ•˜์‹œ๋ฉด ๋งˆ์ง€๋ง‰์œผ๋กœ ๋ง์”€ํ•ด ์ฃผ์‹ญ์‹œ์˜ค.

๋‚˜๋Š”์ด ์ž˜๋ชป๋œ ๊ด€๊ฐ ์ดํ•ดํ•˜์ง€๋งŒ์ด ํ† ๋ก ์ด ์ง„ํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์— ... ์Œ, ๋‚˜๋Š” ์ƒ๊ฐํ•˜์ง€ ์•Š๋Š”๋‹ค node_modules ์— ๋Œ€ํ•œํ–ˆ๋‹ค ์˜๊ฐ pipenv , ๊ทธ๋ฆฌ๊ณ ์— ๋Œ€ํ•œ virtualenv . ๋‚ด ์ถ”์ธก์€ ์—ญ์‚ฌ์ ์œผ๋กœ ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์„ ์ˆ˜ ์žˆ์ง€๋งŒ rbenv ์™€ virtualenv ์™€ ํ•จ๊ป˜ ์ž‘์—…ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ virtualenv ๊ฐ€ ์ดํ•ด๊ฐ€ ์—†๋Š” ๋‚˜์œ ์‚ฌ๋ณธ์ฒ˜๋Ÿผ ๋Š๊ปด์ง„๋‹ค๊ณ  ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. rbenv ์— ์˜ํ•ด ๊ฐœ์„ ๋œ ์ดˆ๊ธฐ ํ”„๋กœํ† ํƒ€์ž…์ผ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‘ ๊ฒฝ์šฐ ๋ชจ๋‘ rbenv ๋น„ํ•ด virtualenv ๋Š” ์›ƒ์Œ๊ฑฐ๋ฆฌ์ด๋ฉฐ ๊ทธ ์ด์œ ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๊ฐ ํ™˜๊ฒฝ์— ๋Œ€ํ•œ ํŒจํ‚ค์ง€๋ฅผ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์–ด๋ฆฌ์„๊ณ  ๋Š๋ฆฌ๊ณ  ํ˜ผ๋ž€์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๋‹จ์ง€ ์ž˜๋ชป๋œ ๋””์ž์ธ ๊ฒฐ์ •์ผ ๋ฟ์ด์ง€๋งŒ ๊ฒฐ์ • ๋ถ€์กฑ์ผ ๊ฐ€๋Šฅ์„ฑ์ด ๋” ํฝ๋‹ˆ๋‹ค. ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์ด๋Ÿฌํ•œ ํŒจํ‚ค์ง€๋ฅผ ์ž„์˜์˜ ๋””๋ ‰ํ† ๋ฆฌ์— ๋„ฃ๋Š” ์ผ๋ถ€ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋ ‡๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฒŒ๋‹ค๊ฐ€ Windows์—์„œ๋Š” ์‹ค์ œ๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Windows์—์„œ ์‹ค์ œ๋กœ ํ…Œ์ŠคํŠธ๋œ ์ ์ด ์—†๋‹ค๋Š” ์ ์—์„œ... ์ด๊ฒƒ์— ๋Œ€ํ•ด ์›ƒ๊ธฐ๋Š” ์  ์ค‘ ํ•˜๋‚˜๋Š” OS๋ฅผ ํ…Œ์ŠคํŠธํ•˜๊ณ  Windows์—์„œ ์‹คํ–‰๋˜๋Š” ๊ฒƒ์„ ๋ฐœ๊ฒฌํ•˜๋ฉด ํ™ˆ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ~ ์„ค์ •ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ๊ธฐ๋ณธ๊ฐ’์€ ๋‚˜์ค‘์— ์ผ๋ถ€ ํ™˜๊ฒฝ ๋ณ€์ˆ˜์— ์˜ํ•ด ์žฌ์ •์˜๋  ์ˆ˜ ์žˆ์ง€๋งŒ ์‹ค์ œ๋กœ ๊ฐ๋…๋˜๊ณ  ๊นจ๋—ํ•œ ํ™˜๊ฒฝ์—์„œ ์ž๋™ํ™”๋ฅผ ์‹คํ–‰ํ•˜๋ ค๋Š” ๊ฒฝ์šฐ... virtualenv ๋Š” ๋‹จ์ˆœํžˆ ๋™์ผํ•œ ๋””๋ ‰ํ† ๋ฆฌ์— ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ... pipenv ๋Š” requests ์™€ ๊ฐ™์€ ์ธ๊ฐ„์„ ์œ„ํ•œ ๋„๊ตฌ๋ผ๊ณ  ์ฃผ์žฅํ•ฉ๋‹ˆ๋‹ค ... ์ œ ์ƒ๊ฐ์—๋Š”? ๊ทธ๋ž˜์„œ ์„ ๋ฐฐ๋‹˜๋“ค์˜ ๋ฏธ์ˆ™ํ•œ ๋…ธ๋ ฅ์„ ์ข€ ๋” ๋ณด์™„ํ•ด์•ผ ํ• ๋“ฏ... ๊ธ€์Ž„์š”.. ์ „์ž‘๋“ค๊ณผ ๋˜‘๊ฐ™์€ ๊ธฐ๋Šฅ์„ ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค๊ณ  ์‹ถ๋‹ค๋ฉด ๊ทธ๋ ‡๊ฒŒ ํ•˜๋Š”๊ฒŒ ๋งž๋Š”๊ฑฐ ๊ฐ™์Šต๋‹ˆ๋‹ค. ? ๊ทธ๋ž˜๋„ virtualenv ์˜ ์“ฐ๋ ˆ๊ธฐ๋ฅผ ๋ฒ„๋ฆฌ์ง€ ์•Š๊ณ  ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋ž˜ํผ๋Š” ๋ž˜ํ•‘๋œ ํ”„๋กœ๊ทธ๋žจ์˜ ์ผ๋ถ€ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ๋” ์–ด๋ ต๊ฒŒ ๋งŒ๋“ ๋‹ค๋Š” ์ ์—์„œ ๋ž˜ํ•‘๋œ ํ”„๋กœ๊ทธ๋žจ๊ณผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค...

๋‚ด ์ธ์ƒ์—์„œ ์ž๋™ํ™”๋ฅผ ์‹œ๋„ํ•˜๋Š” ๋งŽ์€ ์‹œ๋„๋ฅผ ๋ณด์•˜์ง€๋งŒ ์งœ์ฆ์ด ๋‚ฌ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์—ฌ๋Ÿฌ๋ถ„์€ ๋ณ„์„ ๋…ธ๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์œ ์šฉํ•œ ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•˜๊ธฐ๋„ ์ „์— ์‚ฌ์ดํŠธ์— ๊ณผ๋ถ„ํ•œ ํ‰๊ฐ€๋ฅผ ๋ชจ๋‘ ์˜ฌ๋ ค ๋†“์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‹น์‹ ์€ ์•ฝ์†์„ ์ง€ํ‚ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ๋Š” ์‹ค์ œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๊ณ  ๋‹จ์ˆœํžˆ ์—ฌ๋ก ์„ ์กฐ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ์ด์ œ ์ž๋™ํ™”๋ฅผ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋จธ๋Š” GitHub์—์„œ ๋” ๋งŽ์€ "์ข‹์•„์š”"๋ฅผ ๋ฐ›๊ธฐ๋ฅผ ์›ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋˜ ๋‹ค๋ฅธ ์•…์— ์ง๋ฉดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค...

@wvxvw ์‹ค์ œ๋กœ ๋‹น์‹ ์€ ํ‹€ 5๋…„ (4๋…„, ์•„๋ž˜ ์ฐธ์กฐ) ์ •๋„ ์•ž์„œ๋ฏ€๋กœ ์˜๊ฐ์„ ๋ฐ›์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๊ทธ๊ฒƒ๋“ค์€ ๊ทผ๋ณธ์ ์œผ๋กœ ๋‹ค๋ฅธ ๊ฒƒ๋“ค์ด๋ฉฐ, ๊ฒฐ๊ตญ ๋น„์Šทํ•œ ๋ชฉํ‘œ๋ฅผ ๋‹ฌ์„ฑํ•  ๋ฟ์ž…๋‹ˆ๋‹ค. ๋‹น์‹ ์ด ์ฐพ๊ณ  ์žˆ๋Š” ๊ฒƒ(rbenv์—์„œ ์˜๊ฐ์„ ๋ฐ›์€ ๋Ÿฐํƒ€์ž„ ๊ด€๋ฆฌ ๋„๊ตฌ)์€ pyenv์ž…๋‹ˆ๋‹ค.

๋˜ํ•œ virtualenv๊ฐ€ ๋‹ค๋ฅธ ๋„๊ตฌ์™€ ๋™๋“ฑํ•˜์ง€ ์•Š์€ ๊ฒƒ๊ณผ ๊ด€๋ จํ•˜์—ฌ ์‹ญ(10)๋…„ ๋™์•ˆ ์‚ฌ์šฉ๋˜์—ˆ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์•Œ๊ณ  ๊ณ„์‹ญ๋‹ˆ๊นŒ? ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ์š”๊ตฌ ์‚ฌํ•ญ์€ ๋งŽ์ด ๋ณ€ํ•˜๊ณ , ๊ทธ ๊ฐ€์ •์€ ์ ์ฐจ ๊ตฌ์‹์ด ๋˜์—ˆ๊ณ  ์•„๋ฌด๋„ ๊ทธ๊ฒƒ์„ ๋Œ€์ฒดํ•˜๋ ค๊ณ  ๋‚˜์„œ์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ํ•œ ๋‹จ๊ณ„ ๋” ์˜ฌ๋ผ๊ฐˆ ๋งŒํผ ์‹ ๊ฒฝ์„ ์“ฐ๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

๋‚˜๋Š” ๋ชจ๋“  ์‚ฌ๋žŒ์ด ๋งํ•  ๊ธฐํšŒ๋ฅผ ๊ฐ€์งˆ ์ž๊ฒฉ์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์ดํ•ดํ•˜์ง€๋งŒ, ์ฃผ์ œ์— ๋Œ€ํ•œ ์ตœ์†Œํ•œ์˜ ์ดํ•ด ์—†์ด ํ† ๋ก ์— ์ฐธ์—ฌํ•˜๊ณ  ๊ณง๋ฐ”๋กœ ์†๊ฐ€๋ฝ์งˆ์„ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์€ Pipenv, virtualenv ๋ฐ Python ํŒจํ‚ค์ง• ์‹œ์Šคํ…œ ์ „์ฒด์˜ ๊ธฐ์—ฌ์ž์—๊ฒŒ ์ƒ๋‹นํžˆ ๋ฌด๋ก€ํ•œ ์ผ์ž…๋‹ˆ๋‹ค. ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค.


ํŽธ์ง‘ : ๋‚˜๋Š” ์•ฝ๊ฐ„์˜ ํŒŒ๊ธฐ๋ฅผํ–ˆ์Šต๋‹ˆ๋‹ค. virtualenv์˜ ์ดˆ๊ธฐ ๋ฆด๋ฆฌ์Šค์ธ 0.8์€ 2007๋…„์— ๋งŒ๋“ค์–ด์กŒ๊ณ  rbenv์˜(0.1)์€ 2011๋…„์ด์—ˆ์œผ๋ฏ€๋กœ 5๋…„์ด ์•„๋‹ˆ๋ผ 4๋…„ ์ฐจ์ด์ž…๋‹ˆ๋‹ค.

@wvxvw ๋ชจ์š•์„

ํ”„๋กœ์ ํŠธ ๊ฒฝ๋กœ๋ฅผ ๋ณ€๊ฒฝํ•˜๊ณ  ์›๋ž˜ virtualenv ๋งคํ•‘์„ ์žƒ์€ ํ›„์—๋„ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ์ด ์Šค๋ ˆ๋“œ๋ฅผ ์ฝ์—ˆ์Šต๋‹ˆ๋‹ค. ๋จผ์ € pipenv ํŒ€์˜ ๋…ธ๊ณ ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์ด ํ† ๋ก ์— ๋Œ€ํ•ด ๊ณต์œ ํ•˜๊ณ  ์‹ถ์€ ๋ช‡ ๊ฐ€์ง€ ์˜๊ฒฌ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ๋ฌธ์„œ๋Š” ์‹ค์ œ๋กœ ํ”„๋กœ์ ํŠธ ๊ฒฝ๋กœ์™€ ํ™˜๊ฒฝ ๊ฐ„์˜ ๋งคํ•‘ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์ง€์ ํ•ด์•ผ ํ•˜๋ฉฐ ์ตœ์†Œํ•œ changing project path would cause unmapping the original env ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ฒฝ๊ณ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  2. Pipfile์—์„œ ํ™˜๊ฒฝ์— ๋Œ€ํ•œ ๊ฒฝ๋กœ๋ฅผ ์ˆ˜๋™์œผ๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ๋” ์ข‹์„๊นŒ์š”? ์‚ฌ๋žŒ๋“ค์ด ๋™์ผํ•œ ํ™˜๊ฒฝ์„ ์ˆ˜๋™์œผ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ๋ช‡ ๊ฐ€์ง€ ํŠน๋ณ„ํ•œ ์š”๊ตฌ ์‚ฌํ•ญ์ด ์žˆ์„ ์ˆ˜ ์žˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

์—ฌ๋Ÿฌ๋ถ„๊ณผ ๊ณต์œ ํ•˜๊ธฐ ์œ„ํ•œ ์ œ ์˜๊ฒฌ์ผ ๋ฟ์ž…๋‹ˆ๋‹ค.

pipenv๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์™„์ „ํžˆ ๋ถˆ๋ถ„๋ช…ํ•ฉ๋‹ˆ๋‹ค. ํ•˜๋‚˜์˜ ํ”„๋กœ์ ํŠธ์— ์—ฌ๋Ÿฌ ๊ฐ€์ƒ ํ™˜๊ฒฝ์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? ํ”„๋กœ์ ํŠธ ๊ฐ„์— ๊ฐ€์ƒ ํ™˜๊ฒฝ์„ ๊ณต์œ ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? python ๋ฒ„์ „์ด ํ•ด๋‹น ํ”„๋กœ์ ํŠธ์—๋งŒ ํ•„์š”ํ•œ ๊ฒฝ์šฐ pipenv๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŠน์ • ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•ด ๋‹ค๋ฅธ python ๋ฒ„์ „์„ ์–ด๋–ป๊ฒŒ ์„ค์น˜ํ•ฉ๋‹ˆ๊นŒ? ์ด ์Šค๋ ˆ๋“œ์—์„œ ๋ชจ๋‘๋Š” ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์— ๋Œ€ํ•ด ๋งŽ์€ ๊ฒƒ์„ ๊ฐ€์ •ํ•˜๊ณ  ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ์–ด๋””์—์„œ ์™”๋Š”์ง€ ์ดํ•ดํ•˜๋ ค๊ณ  ๋…ธ๋ ฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ™ˆํŽ˜์ด์ง€์—์„œ pipenv์˜ ์นญ์ฐฌ์„ ์ฝ์œผ๋ฉด์„œ ๋„์›€์ด ๋  ๊ฒƒ์ด๋ผ๊ณ  ๋ฏฟ์—ˆ์Šต๋‹ˆ๋‹ค. ๋Œ€์‹ , ๋‚˜๋Š” ๊ทธ๊ฒƒ๊ณผ ์”จ๋ฆ„ํ•˜๋Š” 5์ผ์„ ๋‚ญ๋น„ํ–ˆ๊ณ , ์ง€๊ธˆ์€ ๊ทธ๊ฒƒ์ด ์ ์–ด๋„ ์–ด๋Š ์ •๋„ ๊ฒฐ์ •์ ์ด๊ธฐ ๋•Œ๋ฌธ์— pyenv๋กœ ๋Œ์•„๊ฐˆ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

ํ•˜๋‚˜์˜ ํ”„๋กœ์ ํŠธ์— ์—ฌ๋Ÿฌ ํ™˜๊ฒฝ์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด tox๋ฅผ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค. ์ฃผ์š” ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—๋Š” pipenv๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์—ฌ๋Ÿฌ Python ๋ฒ„์ „์—์„œ ํ…Œ์ŠคํŠธํ•˜๋ ค๋ฉด tox๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.

@ashnur ๋‹น์‹ ์€ ๋ถ„๋ช…ํžˆ ํ•  ์ผ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ž์› ๋ด‰์‚ฌ์ž๋“ค์ด ์šด์˜ํ•˜๋Š” ์˜คํ”ˆ ์†Œ์Šค ํ”„๋กœ์ ํŠธ์— ๋ถ€์ •์ ์ธ ๋‚ด์šฉ์„ ํผ๋œจ๋ฆฌ๋Š” ๋Œ€์‹  ์œ ์šฉํ•œ ๊ฒƒ์„ ๊ธฐ์—ฌํ•ด ๋ณด๋Š” ๊ฒƒ์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ?

@uranusjr
์ด ํ•ด์‹œ ์ผ์ด ์–ด๋””์ž…๋‹ˆ๊นŒ?

ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ ์ค‘์ด๋ฉฐ ๊ฒฝ๋กœ์˜ ํ•ด์‹œ๋ฅผ ๊ณ„์‚ฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

@devxpy ๋„ค ,

๋‚˜๋Š” ๋„ˆํฌ๋“ค์ด pipenv๋กœ virtualenv๋ฅผ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๊ธฐ๋ณธ์ ์ธ ํŠœํ† ๋ฆฌ์–ผ์„ ๋„ฃ์–ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๊ทธ๊ฒƒ์ด ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๋” ์‰ฝ๊ธฐ ๋•Œ๋ฌธ์— ๋” ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ๊ทธ๊ฒƒ์„ ์‚ฌ์šฉํ•  ๊ฒƒ์ด์ง€๋งŒ ๊ทธ๊ฒƒ์ด ํ˜ผ๋ž€์„ ์•ผ๊ธฐํ•œ๋‹ค๋ฉด ๋” ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ๊ทธ๊ฒƒ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๊ณ  ๋‹ค๋ฅธ ๊ฒƒ์„ ์ฐพ์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ํ”„๋กœ์ ํŠธ๋ฅผ ๋นŒ๋“œํ•˜๋Š” ์–ธ์–ด ๋˜๋Š” ๋ฐฉ๋ฒ•

@uranusjr Pipenv๊ฐ€ ํ”„๋กœ์ ํŠธ ๋””๋ ‰ํ† ๋ฆฌ์— ๊ธฐ๋ณธ์ ์œผ๋กœ virtualenv๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๋‚ด๊ฐ€ ๋ณด๊ธฐ์—๋Š” ํ”„๋กœ์ ํŠธ ์ด๋ฆ„์ด ๋ณ€๊ฒฝ/์ด๋™/์‚ญ์ œ๋  ๋•Œ ๊ณ ์•„ ํ™˜๊ฒฝ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋ฉ๋‹ˆ๋‹ค. ๊ฒŒ๋‹ค๊ฐ€ npm์ฒ˜๋Ÿผ ์ž‘๋™ํ•˜๊ธฐ๋ฅผ (๋‹ค์†Œ ์ •๋‹นํ•˜๊ฒŒ) ๊ธฐ๋Œ€ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์—๊ฒŒ๋Š” ๋œ ํ˜ผ๋ž€์Šค๋Ÿฌ์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์•„๋งˆ๋„ ์ „ํ†ต ์™ธ์— ์ด ์ ‘๊ทผ ๋ฐฉ์‹์„ ์„ ํ˜ธํ•˜๋Š” ์ด์ ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

pipenv install ๋ช…๋ น ์ „์— .venv ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. pipenv ์„ค์น˜์— ๋Œ€ํ•œ โ€”venv ๋˜๋Š” โ€”dot-venv ์˜ต์…˜์€ ์‹ค์ œ๋กœ ํ™˜์˜๋ฐ›์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. :)

2018.10.9๋ถ€ํ„ฐ ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋˜ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€์ƒ ํ™˜๊ฒฝ์— ๋Œ€ํ•œ ๊ฒฝ๋กœ๊ฐ€ ํฌํ•จ๋œ .venv ํŒŒ์ผ ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (๊ตํ™œํ•œ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ!)

@andrewpeterprifer ์šฐ๋ฆฌ๋Š” ์ด๊ฒƒ์„ ํ•˜๊ณค ํ–ˆ๊ณ  ์–ด๋–ค ์‚ฌ๋žŒ๋“ค์€ ๋งค์šฐ ๊ฐ•ํ•˜๊ฒŒ ๊ฑฐ๋ถ€ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๊ฒƒ์„ ๋ณ€๊ฒฝํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ํ•˜๋‚˜์˜ ์ ‘๊ทผ ๋ฐฉ์‹ ๋˜๋Š” ๋‹ค๋ฅธ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์„ ํƒํ•ด์•ผ ํ•˜๋ฉฐ, ํ”„๋กœ์ ํŠธ ๋””๋ ‰ํ† ๋ฆฌ ๋‚ด๋ถ€์— ๊ฐ€์ƒ ํ™˜๊ฒฝ์„ ๋‘์ง€ ์•Š๋Š” ๊ฒƒ์ด ๋” ๋‚˜์€ ๊ธฐ๋ณธ๊ฐ’์ž„์„ ์ธ์ •ํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.

ps ์ด์— ๋Œ€ํ•œ FAQ ํ•ญ๋ชฉ์„ ์ž‘์„ฑํ•˜๋Š” ๋ฐ ๊ด€์‹ฌ์ด ์žˆ์œผ์‹ ๊ฐ€์š”? ๋ช‡ ๋‹จ๋ฝ์ด ๊ฑธ๋ฆด ์ˆ˜ ์žˆ์ง€๋งŒ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ํ…์ŠคํŠธ๋ฅผ ๋‹ค๋“ฌ๊ณ  PR์„ ์ œ์ถœํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„์„ ํ• ์• ํ•˜๊ฒ ๋‹ค๊ณ  ์•ฝ์†ํ•˜๋ฉด ๊ธฐ๊บผ์ด ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

@uranusjr ์™œ ๋” ๋‚˜์€ ๊ธฐ๋ณธ๊ฐ’์ธ์ง€ ๋งค์šฐ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. ์ €๋Š” ํŒŒ์ด์ฌ์— ๋Œ€ํ•ด ์ƒ๋Œ€์ ์œผ๋กœ ๋ฉ์ฒญํ•œ ์‚ฌ๋žŒ์ด๊ณ  ์ด์ œ ๋ชจ๋ฒ” ์‚ฌ๋ก€์— ๋Œ€ํ•ด ๋ถ„๋ช…ํ•œ ๊ฒƒ์„ ๋†“์น˜๊ณ  ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. :) ๊ฐ์‚ฌ ํ•ด์š”!

์ถ”์‹ .: ์™œ ๊ทธ๋Ÿฐ ์ผ์ด ์ผ์–ด๋‚˜๋Š”์ง€ ์„ค๋ช…ํ•˜๋ฉด FAQ ํ•ญ๋ชฉ์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ;)

2018.10.9๋ถ€ํ„ฐ ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋˜ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€์ƒ ํ™˜๊ฒฝ์— ๋Œ€ํ•œ ๊ฒฝ๋กœ๊ฐ€ ํฌํ•จ๋œ .venv _file_์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (๊ตํ™œํ•œ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ!)

@andrewpeterprifer ์šฐ๋ฆฌ๋Š” ์ด๊ฒƒ์„ ํ•˜๊ณค ํ–ˆ๊ณ  ์–ด๋–ค ์‚ฌ๋žŒ๋“ค์€ ๋งค์šฐ ๊ฐ•ํ•˜๊ฒŒ ๊ฑฐ๋ถ€ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๊ฒƒ์„ ๋ณ€๊ฒฝํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ํ•˜๋‚˜์˜ ์ ‘๊ทผ ๋ฐฉ์‹ ๋˜๋Š” ๋‹ค๋ฅธ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์„ ํƒํ•ด์•ผ ํ•˜๋ฉฐ, ํ”„๋กœ์ ํŠธ ๋””๋ ‰ํ† ๋ฆฌ ๋‚ด๋ถ€์— ๊ฐ€์ƒ ํ™˜๊ฒฝ์„ ๋‘์ง€ ์•Š๋Š” ๊ฒƒ์ด ๋” ๋‚˜์€ ๊ธฐ๋ณธ๊ฐ’์ž„์„ ์ธ์ •ํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.

ps ์ด์— ๋Œ€ํ•œ FAQ ํ•ญ๋ชฉ์„ ์ž‘์„ฑํ•˜๋Š” ๋ฐ ๊ด€์‹ฌ์ด ์žˆ์œผ์‹ ๊ฐ€์š”? ๋ช‡ ๋‹จ๋ฝ์ด ๊ฑธ๋ฆด ์ˆ˜ ์žˆ์ง€๋งŒ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ํ…์ŠคํŠธ๋ฅผ ๋‹ค๋“ฌ๊ณ  PR์„ ์ œ์ถœํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„์„ ํ• ์• ํ•˜๊ฒ ๋‹ค๊ณ  ์•ฝ์†ํ•˜๋ฉด ๊ธฐ๊บผ์ด ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค ... pipenv๋กœ ๋งŒ๋“  ๊ฐ€์ƒ ํ™˜๊ฒฝ์ด ์žˆ๋Š” ํ”„๋กœ์ ํŠธ ํด๋”๋ฅผ ์ด๋™ํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ๊ณผ ๋˜‘๊ฐ™์€ ํ•„์š”๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ˜„์žฌ ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์ „ํ˜€ ๋ฌธ์ œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

  • ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ๊ณณ์œผ๋กœ ํ”„๋กœ์ ํŠธ ํด๋”๋ฅผ ์ด๋™
  • C:\Users\user\.virtualenvs์—์„œ ๋ฐฉ๊ธˆ ์ด๋™ํ•œ ํ”„๋กœ์ ํŠธ์™€ ์—ฐ๊ฒฐ๋œ ๊ฐ€์ƒ ํ™˜๊ฒฝ์˜ ํด๋”๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.
  • cmd๋ฅผ ํ†ตํ•ด ์ƒˆ ํ”„๋กœ์ ํŠธ ํด๋” ์œ„์น˜๋กœ ์ด๋™ํ•˜๊ณ  pipenv install(๋˜๋Š” pipenv ์…ธ์„ ์‹คํ–‰ํ•œ ๋‹ค์Œ pipenv sync)์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  ๊ฒƒ์ด ์ •์ƒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋‚˜์œ ์Šต๊ด€์ž…๋‹ˆ๊นŒ?

@uranusjr ์ฃผ์„๊ณผ ๊ด€๋ จํ•˜์—ฌ ์ƒˆ ๊ธฐ๋Šฅ์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ดํ•ดํ–ˆ๋‹ค๋ฉด .venv ํŒŒ์ผ(์›ํ•˜๋Š” ๊ฐ€์ƒ ํ™˜๊ฒฝ์— ๋Œ€ํ•œ ๊ฒฝ๋กœ ํฌํ•จ)์„ ํ”„๋กœ์ ํŠธ ํด๋”์— ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ด์ „์— ์–ธ๊ธ‰ํ•œ ๋ชจ๋“  ๋‹จ๊ณ„๋ฅผ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š์•„๋„ ๋ฉ๋‹ˆ๊นŒ? ๊ทธ๋ ‡๋‹ค๋ฉด ํ›Œ๋ฅญํ•ฉ๋‹ˆ๋‹ค!!
๊ทธ๋ ‡๋‹ค๋ฉด ๊ฐ€์ƒ ํ™˜๊ฒฝ์„ ์ฒ˜์Œ ์ƒ์„ฑํ•  ๋•Œ ํ”„๋กœ์ ํŠธ ํด๋”์— ์ž๋™์œผ๋กœ ๊ทธ๋Ÿฐ ํŒŒ์ผ์ด ์ƒ์„ฑ๋œ๋‹ค๋ฉด ๋” ์ข‹์ง€ ์•Š์„๊นŒ์š”?

์ถ”์‹ : ๋˜ํ•œ FAQ๋ฅผ ์ž‘์„ฑํ•  ์˜ํ–ฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ์‹ค, @gioxc88 ์˜ ์•„์ด๋””์–ด๊ฐ€ ์ข‹์€ ๊ฒƒ ๊ฐ™์•„์š”. ์ƒˆ๋กœ ์ƒ์„ฑ๋œ virtualenv๋Š” ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ ์•„๋ž˜์— .env ํŒŒ์ผ์„ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๊ณ  PATH ์™€ ๊ฐ™์€ ํ™˜๊ฒฝ ์„ค์ •์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž์—๊ฒŒ ํ™˜๊ฒฝ์„ ๋ณด๋‹ค ํˆฌ๋ช…ํ•˜๊ฒŒ ๋งŒ๋“ค๊ณ  ์žฌ๊ตฌ์„ฑํ•˜๋Š” ๋” ํŽธ๋ฆฌํ•œ ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์งˆ๋ฌธ์— ํ•จ๊ป˜ ๋‹ต๋ณ€ํ•ด ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. ์ ‘๊ทผ ๋ฐฉ์‹์€ ๋‚˜์˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(IMO, ์ €๋„ ๊ฐ™์€ ์„ค์ •์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค). ๊ทธ๋Ÿฌ๋‚˜ ๋ชจ๋ฅด๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๊ฑธ๋ ค ๋„˜์–ด์ง€๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์„ ์ƒ๊ฐํ•˜๋Š” ํ•œ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์€ ํ”„๋กœ์ ํŠธ๋ฅผ ๋ฒ„์ „ ์ œ์–ด(์˜ˆ: Git)์— ๋„ฃ๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ™˜๊ฒฝ์ด ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ์— ์ƒ์„ฑ๋˜๋ฉด ๋‹น์—ฐํžˆ ์ €์žฅ์†Œ ๋ฃจํŠธ์— ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ์„ค์ •์— ์ต์ˆ™ํ•œ ๋‚˜์™€ ๋‚˜ ๊ฐ™์€ ์‚ฌ๋žŒ๋“ค์€ .venv ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์ฒดํฌ์ธ๋˜์ง€ ์•Š๋„๋ก .gitignore (๋˜๋Š” ์ „์—ญ ๋ฌด์‹œ ๊ตฌ์„ฑ)์— ๊ทœ์น™์„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๋ถ„๋ช…ํžˆ ์•Œ๊ณ  ์žˆ์ง€๋งŒ ์ˆœ์ง„ํ•œ ์‚ฌ์šฉ์ž๋Š” ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉฐ ์šฐ์—ฐํžˆ ํ™˜๊ฒฝ์„ ๋งค์šฐ ์‰ฝ๊ฒŒ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ์— ๋‚˜์  ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ (๋” ์ค‘์š”ํ•˜๊ฒŒ) ๋กœ์ปฌ ์ •๋ณด๋ฅผ ๋…ธ์ถœํ•˜์—ฌ ์ž ์žฌ์ ์ธ ๊ณต๊ฒฉ์— ๋Œ€ํ•œ ๋ฒกํ„ฐ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ƒ์„ฑ๋œ ํŒŒ์ผ์„ ํ”„๋กœ์ ํŠธ ๋””๋ ‰ํ† ๋ฆฌ์— ๋„ฃ์ง€ ์•Š๋Š” ๊ฒƒ์ด ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ ๋„๊ตฌ์˜ ์ผ๋ฐ˜์ ์ธ ๊ทœ์น™์ž…๋‹ˆ๋‹ค. ์ƒํƒœ๊ณ„๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ์„ค๊ณ„ํ•˜๋Š” ๊ฒฝ์šฐ(์˜ˆ: NPM์˜ node_modules ) ์ด๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ด ๊ดœ์ฐฎ์„ ์ˆ˜ ์žˆ์ง€๋งŒ(์˜ˆ: NPM์˜

๊ธฐ๋ณธ์ ์œผ๋กœ ํ™˜๊ฒฝ์ด ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ ์™ธ๋ถ€์—์„œ ์ƒ์„ฑ๋˜๋Š” ๊ฒฝ์šฐ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ฒŒ์‹œํ•  ๋•Œ(์˜ˆ: GitHub์— ํ‘ธ์‹œ) ๊ฑฑ์ •ํ•  ๊ฐ€๋Šฅ์„ฑ์ด ํ•œ ๊ฐ€์ง€ ์ค„์–ด๋“ญ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ (ํ”„๋กœ์ ํŠธ ๋‚ด ํ™˜๊ฒฝ์„ ์„ ํ˜ธํ•˜๋Š”) ์šฐ๋ฆฌ์˜ ์‚ถ์„ ์กฐ๊ธˆ ๋” ์–ด๋ ต๊ฒŒ ๋งŒ๋“ค์ง€๋งŒ ์œ„ํ—˜ ๊ด€์ ์—์„œ ์ผ์–ด๋‚  ์ˆ˜ ์žˆ๋Š” ์ตœ์•…์˜ ์ƒํ™ฉ์€ ์‹ค์ˆ˜๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ์ด๋™ํ•˜๊ณ  ํ™˜๊ฒฝ์„ ๊นจ๋œจ๋ฆฌ๊ฑฐ๋‚˜ ํ”„๋กœ์ ํŠธ๊ฐ€ ์ œ๊ฑฐ๋  ๋•Œ ํ™˜๊ฒฝ์„ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ์„ ์žŠ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. . ์–ด๋Š ์ชฝ์ด๋“  ์‹ค์ˆ˜๋กœ ์ž ์žฌ์ ์œผ๋กœ ๋ฏผ๊ฐํ•œ ํ™˜๊ฒฝ ์ •๋ณด๋ฅผ GitHub์— ํ‘ธ์‹œํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ํ›จ์”ฌ ๋” ์‰ฝ๊ฒŒ ๋ณต๊ตฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

.venv ํŒŒ์ผ ๊ธฐ๋Šฅ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์ด๋ฉฐ(์ผ ์ „์— ์ถœ์‹œ๋จ), ์šฐ๋ฆฌ๋Š” ์—ฌ์ „ํžˆ ์ด๋ฅผ ๊ฐ€์žฅ ์ž˜ ํ™œ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ชจ์ƒ‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ์ „ํžˆ .venv ๋””๋ ‰ํ† ๋ฆฌ์™€ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์ง€๋งŒ ๊ทธ๋ ‡๊ฒŒ ๋‚˜์˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ ์ž์ฒด๊ฐ€ ์ •๋ง ๋งˆ์Œ์— ๋“ญ๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์—ฌ๊ธฐ์—์„œ ๊ณ ๋ คํ•ด์•ผ ํ•  ์‚ฌํ•ญ์ด ์—ฌ์ „ํžˆ ๋งŽ์Šต๋‹ˆ๋‹ค.

์•ˆ๋…•. ์ €์—๊ฒŒ .venv ๋””๋ ‰ํ† ๋ฆฌ(์ด์ „ ๊ธฐ๋Šฅ)์™€ .venv ํŒŒ์ผ(์ƒˆ ๊ธฐ๋Šฅ)์€ ๊ดœ์ฐฎ์ง€๋งŒ pipenv install ๋ช…๋ น์— ์˜ต์…˜์ด ์žˆ์œผ๋ฉด ๋งค์šฐ ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒƒ:

pipenv install

~/.local/

pipenv install --venv

$PWD/.venv ๋””๋ ‰ํ† ๋ฆฌ์— ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

pipenv install --venv-dir /my/custom-path

/my/custom-path ์„ค์น˜๋ฉ๋‹ˆ๋‹ค.

์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์›ํ•˜์‹œ๋ฉด ~/.peeps ๊ฐœ์„  ์ œ์•ˆ์„ ํ•˜์—ฌ ์ ์ ˆํ•˜๊ฒŒ ์ œ์•ˆํ•ด ์ฃผ์„ธ์š”. ๋‹ค์–‘ํ•œ ๋ฌธ์ œ์— ๋ฌด์ž‘์œ„๋กœ ํฉ์–ด์ ธ ์žˆ๋Š” ๊ฐœ์„  ์ œ์•ˆ์„ ํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ์ถ”์ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

@uranusjr ์ž์„ธํ•œ ๋‹ต๋ณ€ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ๋‚ด ํ˜ธ๊ธฐ์‹ฌ์„ ์ถฉ์กฑ์‹œํ‚ค๊ธฐ ์œ„ํ•ด ์–ด๋–ค ์ข…๋ฅ˜์˜ ๋กœ์ปฌ(์ž ์žฌ์ ์œผ๋กœ ๋ฏผ๊ฐํ•œ) ์ •๋ณด๊ฐ€ ์ฒดํฌ์ธ๋œ python venv์— ์˜ํ•ด ๋…ธ์ถœ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? node_modules๊ฐ€ ์ฒดํฌ์ธ๋˜๋ฉด ์„ฑ๊ฐ€์‹  ์ผ์ด๋ผ๋Š” ๋ฐ ๋™์˜ํ•˜์ง€๋งŒ ์ผ๋ฐ˜์ ์œผ๋กœ ์—ฌ๊ธฐ์—๋Š” ๋กœ์ปฌ ์ •๋ณด๊ฐ€ ํฌํ•จ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Python ๊ฐ€์ƒ ํ™˜๊ฒฝ์—๋Š” ์—ฌ๋Ÿฌ ์…ธ ์Šคํฌ๋ฆฝํŠธ(์˜ˆ: activate )๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์•”ํ˜ธ, ๋‹ค๋ฅธ ๊ตฌ์„ฑ ํŒŒ์ผ ๊ฒฝ๋กœ ๋“ฑ์„ ์ง€์ •ํ•˜๊ธฐ ์œ„ํ•ด ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€์ƒ ํ™˜๊ฒฝ์—์„œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ˆ˜์ •ํ•˜๋Š” ๊ฒƒ์€ ๋ชจ๋ฒ” ์‚ฌ๋ก€์— ์œ„๋ฐฐ๋˜์ง€๋งŒ ๊ทธ๋Ÿผ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์‚ฌ๋žŒ๋“ค์€ ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. - ๊ฐœ์ธ์ ์ธ ๊ฒฝํ—˜).

๋˜ํ•œ node_modules ๋ฏผ๊ฐํ•œ ์ •๋ณด๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ƒํƒœ๊ณ„๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ๊ตฌ์ถ•ํ•  ๋•Œ์˜ ๋˜ ๋‹ค๋ฅธ ์ด์ ์ž…๋‹ˆ๋‹ค. Python ๊ฐ€์ƒ ํ™˜๊ฒฝ์€ ๋ถˆํ–‰ํžˆ๋„ ์ด๊ฒƒ์ด ์ผ๋ฐ˜์ ์ธ ๋ฌธ์ œ๊ฐ€ ๋˜๊ธฐ ์ „์— ๋ฐœ๋ช…๋œ ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค(๋‹น์‹œ์—๋Š” VCS๋ฅผ ์ „ํ˜€ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ์ด๋ฏธ ์ „๋ฌธ๊ฐ€์˜€์Šต๋‹ˆ๋‹ค).

pipenv๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ virtualenv๋ฅผ ์–ด๋–ป๊ฒŒ ์•Œ๊ณ  ์žˆ๋Š”์ง€ ์ดํ•ดํ•˜๋ ค๊ณ  ํ•˜๋Š” ๋™์•ˆ ์—ฌ๊ธฐ์— ๋„์ฐฉํ–ˆ์Šต๋‹ˆ๋‹ค. :)

ํ† ๋ก ํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ๋ฉ”์ธ ํŽ˜์ด์ง€(์˜ˆ: ์—ฌ๊ธฐ )์—์„œ ํ”„๋กœ์ ํŠธ ๊ฒฝ๋กœ์˜ ์ด๋ฆ„์„ ๋ฐ”๊พธ๋ฉด virtualenv ๋ฐ”์ธ๋”ฉ์˜ ๊ธฐ๋ณธ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ์ค‘๋‹จ๋˜๋„๋ก ์ง€์ •ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  ๋ฌธ์„œ ํŽ˜์ด์ง€๋Š” ๊ธฐ์—ฌ๋ฅผ ์œ„ํ•ด ์—ด๋ ค ์žˆ์Šต๋‹ˆ๋‹ค. ๋ถ€ํƒํ•˜์ง€ ๋ง๊ณ  ํ•˜์„ธ์š” :)

๊ทธ๋Ÿด ๊ฒŒ์š”!

@uranusjr ์ด๊ฒƒ์€ ๋””๋ ‰ํ† ๋ฆฌ์˜ ์ด๋ฆ„์„ ๋ฐ”๊พธ๋ฉด ๋‚ด ํ”„๋กœ์ ํŠธ์˜ virtualenv๊ฐ€ ์†์‹ค๋œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ๋‚˜์œ. ๋””๋ ‰ํ† ๋ฆฌ์˜ ์ด๋ฆ„์„ ๋ฐ”๊พธ๋Š” ๊ฒƒ์€ ์ผ๋ฐ˜์ ์ธ ์‚ฌ์šฉ ์‚ฌ๋ก€์ผ ์ˆ˜ ์žˆ์œผ๋ฉฐ ์‚ฌ์šฉ์ž๋Š” ์ด์— ๋น ์ง€๊ณ  ํ™˜๊ฒฝ์ด ์–ด๋–ป๊ฒŒ ์ž‘๋™์„ ๋ฉˆ์ท„๋Š”์ง€ ๊ถ๊ธˆํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ ์ˆ˜์ •ํ•˜๊ณ  Pipfile์— ํ•ญ๋ชฉ์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๋˜๋Š” ๋‹ค๋ฅธ .pipenv ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด ๊ฐ ํ”„๋กœ์ ํŠธ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์ด๋Ÿฌํ•œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

๋‹น์‹ ์€ ๋ฌด์—‡์„ ์ œ์•ˆํ•ฉ๋‹ˆ๊นŒ?

๋‘ ์งˆ๋ฌธ์— ๋ชจ๋‘ ๋‹ตํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

๋‘ ๊ฐ€์ง€ ๋ชจ๋‘ ์งˆ๋ฌธํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋˜ํ•œ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค,

์ž˜๋ชป๋œ ๋””๋ ‰ํ† ๋ฆฌ์—์„œ pipenv๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๊ณ  ์˜ฌ๋ฐ”๋ฅธ ๋””๋ ‰ํ† ๋ฆฌ์—์„œ virtualenv ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ pipenv --venv ๋ฅผ ์ˆ˜ํ–‰ํ•˜์—ฌ virtualenv ๊ฒฝ๋กœ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๊ณ  PIpfile ๋ฐ Pipfile.lock ์ด๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ฌ๋ฐ”๋ฅธ ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

echo ${PATH_OBTAINED_FROM_PREVIOUS_COMMAND} > .venv ๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ ๋””๋ ‰ํ† ๋ฆฌ์— ์žˆ๊ณ  ์ œ๋Œ€๋กœ ์ž‘๋™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์˜ค๋Š˜ ๋‚˜๋Š” ์ƒ์œ„ ๋””๋ ‰ํ† ๋ฆฌ์— pipfile์ด ์žˆ์œผ๋ฉด pipenv๊ฐ€ export PIPENV_VENV_IN_PROJECT=1 ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ๋ฌด์‹œํ•˜๊ณ  ๋Œ€์‹  ์ƒ์œ„ ๋””๋ ‰ํ† ๋ฆฌ์— venv๋ฅผ ์„ค์น˜ํ•œ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์•Œ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. 2018.11.26 ๋ฆด๋ฆฌ์Šค์— ์žˆ์Šต๋‹ˆ๋‹ค. ์ƒ์œ„ ๋””๋ ‰ํ† ๋ฆฌ์—์„œ pipfile์„ ์ œ๊ฑฐํ•˜๋ฉด pipenv๋Š” ๋ฌธ์„œํ™”๋œ ๋Œ€๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰