Pipenv: 2020๋…„ 4์›”(๋‹น์‹œ 5์›”) ๋ฆด๋ฆฌ์Šค ์ถ”์  ๋ฌธ์ œ

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

์ด๊ฒƒ์€ ๋ฆด๋ฆฌ์Šค๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด ํ•ด๊ฒฐํ•ด์•ผ ํ•˜๊ฑฐ๋‚˜ ์—ฌ์ „ํžˆ ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ•˜๋Š” ๊ด€๋ จ ๋ฌธ์ œ์™€ ์—ฐ๊ฒฐ๋˜๋Š” ๋‚ด๋ถ€ ์ถ”์  ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ์˜ค๋žœ ์‹œ๊ฐ„ ๋™์•ˆ ์™”์Šต๋‹ˆ๋‹ค(https://github.com/pypa/pipenv/issues/4058#issuecomment-565550646 ๋ฐ https://github.com/pypa/pipenv/issues/3742#issuecomment-492100711 ์ฐธ์กฐ). ์— ๋Œ€ํ•œ ์˜๊ฒฌ) ๊ทธ๋ฆฌ๊ณ  2020๋…„ 3์›”์— ์‹œํ—˜ํŒ์„ ์ถœ์‹œํ•˜๋Š” ์ž ์ •์ ์ธ ๋ชฉํ‘œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

( @brainwane ์ด ํŽธ์ง‘: ์ง€์†์ ์ธ ํ†ตํ•ฉ ์„ค์ •์˜ ์ผ๋ถ€ ์˜ค๋ฅ˜๋ฅผ ์ˆ˜์ •ํ•˜๋ฉด ์ด ๋ฆด๋ฆฌ์Šค 2020.04.1a1์ด -- ์ƒˆ๋กœ์šด ์ถ”์ • -- 2020๋…„ 4์›” 21์ผ๊นŒ์ง€ ์—ฐ๊ธฐ๋ฉ๋‹ˆ๋‹ค.)

( @brainwane ์ด ํŽธ์ง‘ํ•˜์—ฌ 4์›” 29์ผ ํ˜„์žฌ ํ”„๋ฆฌ๋ฆด๋ฆฌ์ฆˆ 2020.4.1b1 ๊ฐ€ ์ถœ์‹œ๋˜์—ˆ์œผ๋ฉฐ Dan์€ ์•ฝ 1์ฃผ์ผ ์•ˆ์— ๋‹ค์Œ ๋ฆด๋ฆฌ์Šค๋ฅผ ์ถœ์‹œํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.)

( 2020๋…„ 3์›” 5์ผ Dan๊ณผ์˜ ๋Œ€ํ™”์—์„œ @brainwane ์ด ํŽธ์ง‘ํ•œ ํ›„ 3์›”๊ณผ 4์›” ๋‚ด๋‚ด)

  • [x] 2020๋…„ 3์›” ๋ฆด๋ฆฌ์Šค ๋งˆ์ผ์Šคํ†ค์˜ ๊ธฐํƒ€ ํ•ญ๋ชฉ:
  • [x] [ pip-shims ํ…Œ์ŠคํŠธ ์‹คํŒจ ์ˆ˜์ •](https://github.com/sarugaku/pip-shims/issues/58) ( bugfix/56 ๋ถ„๊ธฐ ๋ณ‘ํ•ฉ)
  • [x] requirementslib ์ˆ˜์ •:

    • [x] sarugaku/requirementslib#204 requirementslib ๋ฌธ์ œ setup.py ์˜ AST ๊ตฌ๋ฌธ ๋ถ„์„์ด ๋น„์ถ”๊ฐ€ ์œ ํ˜• binOps ์—์„œ ์‹คํŒจํ•จ

    • [x] sarugaku/requirementslib#205 ๋น„ utf8 setup.py ํŒŒ์ผ์—์„œ AST ๊ตฌ๋ฌธ ๋ถ„์„ ์‹คํŒจ

    • [x] sarugaku/requirementslib/issues/214 CI์— ํ…Œ์ŠคํŠธ ์ข…์†์„ฑ์˜ ์—…๊ทธ๋ ˆ์ด๋“œ๋œ ๋ฒ„์ „์„ ์„ค์น˜ํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

    • [x] sarugaku/requirementslib#219 ๊ณ„์‚ฐ๊ธฐ PyPI์˜ ์•„ํ‹ฐํŒฉํŠธ์— ๋Œ€ํ•œ ์š”๊ตฌ ์‚ฌํ•ญ ๊ณ„์‚ฐ๊ธฐ ์ถ”๊ฐ€

    • [x] ๋‹ค๋ฅธ pipenv ๋ฆด๋ฆฌ์Šค ์ฐจ๋‹จ์— ๋Œ€ํ•œ requirements-lib ๋ฌธ์ œ ๊ฒ€ํ† 

  • [x] ๊ด€๋ จ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์ƒˆ ๋ฆด๋ฆฌ์Šค ๋งŒ๋“ค๊ธฐ:

    • [x] [requirementslib](https://pypi.org/project/requirementslib/)

    • [x] [ํ•์‹ฌ](https://pypi.org/project/pip-shims/)

    • [x] [pythonfinder](https://pypi.org/project/pythonfinder/)

  • [x] ๋ˆ„๋ฝ๋œ ์ข…์†์„ฑ/๊ฐ€์ ธ์˜ค๊ธฐ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด #4169 ์™„๋ฃŒ, ์Šน์ธ ๋ฐ ๋ณ‘ํ•ฉ

    • [x] ๋‰ด์Šค ํ•ญ๋ชฉ ์ˆ˜์ •

    • [x] ๊นจ์ง„ CI ๊ตฌ์„ฑ ์ˆ˜์ •

    • [x] ํ…Œ์ŠคํŠธ ํ†ต๊ณผ

  • [x] pyup API ํ‚ค๊ฐ€ ๋‹ค์‹œ ์ž‘๋™ํ•˜๋„๋ก ํ•˜๊ฑฐ๋‚˜ ๋Œ€์•ˆ์„ ์„ ํƒํ•˜๊ณ  ๊ตฌํ˜„ํ•˜์—ฌ #4188 ์ˆ˜์ •
  • [x] ๋งˆ์Šคํ„ฐ์— ์ „๋‹ฌํ•  GitHub ํ…Œ์ŠคํŠธ ๊ฐ€์ ธ์˜ค๊ธฐ(#4201์—์„œ ์–ธ๊ธ‰ํ•œ ํ…Œ์ŠคํŠธ ๊ฑด๋„ˆ๋›ฐ๊ธฐ)
  • [x] ์‚ฌ์ „ ๋ฆด๋ฆฌ์Šค ์ƒ์„ฑ์„ ํ—ˆ์šฉํ•˜๋„๋ก ๋ฆด๋ฆฌ์Šค ์ž๋™ํ™” ๊ฐœ์„ 

    • [x] ์ดˆ์•ˆ ๋ชจ๋“œ์—์„œ ๋ณ€๊ฒฝ ๋กœ๊ทธ ์ƒ์„ฑ

    • [x] ์ž๋™ ํƒœ๊ทธ ์ง€์ • ๋ฐ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ํƒœ๊ทธ ํ‘ธ์‹œ ์•ˆ ํ•จ

  • [x] ํŒจํ‚ค์ง•/๋ฆด๋ฆฌ์Šค ์ฒดํฌ๋ฆฌ์ŠคํŠธ ๋ฅผ ์œ„ํ•ด "๋กœ์ปฌ ํ…Œ์ŠคํŠธ" ๋ฐ "๋ฆด๋ฆฌ์Šค ์—…๋กœ๋“œ"๋ฅผ ํ†ตํ•ด ์—…๋ฐ์ดํŠธ ๋ฐ ์‹คํ–‰
  • [x] pipenv ์‹œํ—˜ํŒ ๋ฒ„์ „ 2020.04.1a1 ์„ PyPI์— ํŒจํ‚ค์ง• ๋ฐ ์—…๋กœ๋“œ

์ด๊ฒƒ์ด Dan์ด 2020๋…„ 4์›” 21์ผ๊นŒ์ง€ ๋ชฉํ‘œ๋กœ ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ:

  • [x] https://github.com/sarugaku/requirementslib/issues/216 ์— ๋Œ€ํ•œ ์ˆ˜์ • ์‚ฌํ•ญ์„ ํ†ตํ•ฉํ•œ ์ƒˆ๋กœ์šด ์š”๊ตฌ ์‚ฌํ•ญ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฆด๋ฆฌ์Šค๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

    • [x] ์š”๊ตฌ ์‚ฌํ•ญ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ข…์†์„ฑ ์žฌ์ž ๊ธˆ

  • [x] ์‹œํ—˜ํŒ์„ ํ™๋ณดํ•˜๊ณ  ์ผ์ฃผ์ผ ๊ฐ„์˜ ํ…Œ์ŠคํŠธ๋ฅผ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค.

    • [x] ํŠนํžˆ PEP 517 ๋ฐฑ์—”๋“œ์— ๋Œ€ํ•ด Windows์—์„œ ํ…Œ์ŠคํŠธํ•˜๊ณ  virtualenvs ๊ด€๋ จ

  • [x] ~1์ฃผ ํ›„(์‡ผ์Šคํ† ํผ ๋ฒ„๊ทธ๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ), ์ƒˆ ๋ฆด๋ฆฌ์Šค ๊ฒŒ์‹œ

๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ๋„์šธ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•:

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

^ ์ถœ์‹œ๊ฐ€ ๋๋‚ฌ์Šต๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ์— ๋„์›€์„ ์ฃผ์‹  ๋ชจ๋“  ๋ถ„๋“ค๊ป˜ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค!

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

์ด๊ฒƒ์€ ๋‹ค์Œ ๋ฆด๋ฆฌ์Šค๊ฐ€ ์–ธ์ œ์ธ์ง€, ์ฐจ๋‹จ๊ธฐ๊ฐ€ ๋ฌด์—‡์ธ์ง€, ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๋„์šธ ์ˆ˜ ์žˆ๋Š” ์ผ์ด ์žˆ๋Š”์ง€ ๋ฌผ์–ด๋ณผ ์ˆ˜ ์žˆ๋Š” ์ข‹์€ ์žฅ์†Œ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ ํŒ€์€ ํŠนํžˆ #3298์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๋‹ค์Œ ์—…๋ฐ์ดํŠธ๋ฅผ ๊ธฐ๋Œ€ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ฃผ์š” ์ฐจ๋‹จ๊ธฐ๊ฐ€ ์•„์ง ๋‚จ์•„ ์žˆ์Šต๋‹ˆ๊นŒ?

๋‚˜๋Š” ์˜ค๋Š˜ https://github.com/pypa/packaging.python.org/issues/701 ์„ ๋ฐœ๊ฒฌ ํ–ˆ๊ณ  @techalchemy ๊ฐ€ ์ƒˆ๋กœ์šด ๋ฆด๋ฆฌ์Šค๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐ ๋ฐฉํ•ด๊ฐ€ ๋˜๋Š” ์š”์†Œ์— ๋Œ€ํ•ด ์ข€ ๋” ๋ช…ํ™•ํ•˜๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋„๋ก ์•ฝ 90๋ถ„์˜ ์‹œ๊ฐ„์„ ๊ธฐ๋ถ€ํ–ˆ์Šต๋‹ˆ๋‹ค( IRC ๋Œ€ํ™” )) . https://github.com/pypa/pipenv/issues/3369#issue -389160510 ์ด์ œ ๋ฆด๋ฆฌ์Šค ์ฒดํฌ๋ฆฌ์ŠคํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. @techalchemy ๋Š” @JBKahn ๋˜๋Š” ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ๋„์›€์„ ์›ํ•˜๋Š” ๊ฒฝ์šฐ์— ๋Œ€๋น„ํ•˜์—ฌ ํ•ด๋‹น ๋ฆด๋ฆฌ์Šค ์ฐจ๋‹จ๊ธฐ์— ๋„์›€์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@techalchemy : ์—ฌ๊ธฐ์— ๋งํฌ๋œ ๋ฌธ์ œ๋ฅผ ์‚ดํŽด๋ณด๋ฉด ๋งŽ์€ ๋ถ€๋ถ„์ด ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ์Šค๋ ˆ๋“œ(:

@brainwane , @techalchemy , ์ œ ๊ฐ„์„ญ๊ณผ ์ž ์žฌ์  ๋ฌด์ง€์— ๋Œ€ํ•ด ์‚ฌ๊ณผ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด ๋ฆด๋ฆฌ์Šค์—์„œ #2227 ๋ฐ/๋˜๋Š” #3520์„ ๋นผ๋Š” ๊ฒƒ์„ ์ œ์•ˆํ•ด๋„ ๋ ๊นŒ์š”? ๋‚ด ์ธ์ƒ์€ ์–ด๋Š ์ •๋„ ๋ฆด๋ฆฌ์Šค๋˜๋Š” ๊ฒƒ์ด ํ•„์ˆ˜์ ์ด๋ฉฐ ์œ ์ตํ•˜๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. #2227์€ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ #3520์—๋Š” ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์„ค๋ช…๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค(๋ฆฌํฌํ„ฐ์˜ ์ด์˜ ์—†์Œ).

๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋‹ค์Œ pipenv๋ฅผ ์ถœ์‹œํ•˜๊ธฐ ์ „์— "๊ด€๋ จ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์ƒˆ ๋ฆด๋ฆฌ์Šค๋ฅผ ๋งŒ๋“ค๊ธฐ"๊ฐ€ ์—„๊ฒฉํ•˜๊ฒŒ ํ•„์š”ํ•ฉ๋‹ˆ๊นŒ? #3613์„ ์‚ดํŽด๋ณด๋‹ค๊ฐ€ ํ˜„์žฌ ๋งˆ์Šคํ„ฐ ๋ธŒ๋žœ์น˜๊ฐ€ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค...

๋‚˜๋Š” ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๊ฐ€ ์ค‘์š”ํ•˜์ง€ ์•Š๋‹ค๊ณ  ์ œ์•ˆํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ด๋ฏธ ๋งˆ์Šคํ„ฐ์˜ ๊ฐœ์„  ์‚ฌํ•ญ์ด ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์ „๋‹ฌ๋˜๋Š” ๊ฒƒ์„ ๋ฐฉํ•ดํ•ด์„œ๋Š” ์•ˆ๋œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

3์›”๋„ ๊ฑฐ์˜ ๋๋‚˜๊ฐ€๊ณ 

https://github.com/pypa/pipenv/issues/3520 ์ด ํ˜„์žฌ ๋งˆ์Šคํ„ฐ์—์„œ ์ˆ˜์ •๋œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. https://github.com/pypa/pipenv/issues/2227 ์€ ์—…๋ฐ์ดํŠธ์— ๋Œ€ํ•œ ์ค‘์š”ํ•œ ์ˆ˜์ •์œผ๋กœ ๋ณด์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. .

์ปค๋ฎค๋‹ˆํ‹ฐ๊ฐ€ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ๋Š” ๊ณณ์„ ์ฐจ๋‹จํ•˜๋Š” ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์†์„ ๋‚ด๋ฐ€๊ฒŒ ๋˜์–ด ๊ธฐ์ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋ฆด๋ฆฌ์Šค ์—…๋ฐ์ดํŠธ ๋ฐ ๋ฌธ์„œ ์—…๋ฐ์ดํŠธ๋งŒ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

@Froskekongen @amhrasmussen @fridex ํฌ์ธํ„ฐ ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ์–ด์ œ @techalchemy ์— ์‹œ๊ฐ„์„ ์ข€ ๋” ๊ธฐ๋ถ€ ํ–ˆ๊ณ  ๋ชฉ๋ก์— ์žˆ๋Š” ๊ด€๋ จ ํ•ญ๋ชฉ ์ค‘ ๋ช‡ ๊ฐ€์ง€๋ฅผ ๋” ์‚ดํŽด ๋ดค์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์— ๋งํฌ๋œ ๋ฌธ์ œ๋ฅผ ๋ณด๋ฉด ๋งŽ์€ ๋ถ€๋ถ„์ด ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ์Šค๋ ˆ๋“œ(:

๊ฐ์‚ฌ ํ•ด์š”! ์ด์ œ ๋ช‡ ๊ฐ€์ง€ ๋” ํ™•์ธ๋ฉ๋‹ˆ๋‹ค. :-)

ํ˜„์žฌ ๋งˆ์Šคํ„ฐ์— #3520์ด ๊ณ ์ •๋œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

#3520์— ๋Œ€ํ•œ ๋Œ“๊ธ€๋กœ ๋ง์”€ํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ๊ฐ์‚ฌ ํ•ด์š”.

2227์€ ์—…๋ฐ์ดํŠธ์— ๋Œ€ํ•œ ์ค‘์š”ํ•œ ์ˆ˜์ • ์‚ฌํ•ญ์œผ๋กœ ๋ณด์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@brainwane , @techalchemy , ์ œ ๊ฐ„์„ญ๊ณผ ์ž ์žฌ์  ๋ฌด์ง€์— ๋Œ€ํ•ด ์‚ฌ๊ณผ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด ๋ฆด๋ฆฌ์Šค์—์„œ #2227 ๋ฐ/๋˜๋Š” #3520์„ ๋นผ๋Š” ๊ฒƒ์„ ์ œ์•ˆํ•ด๋„ ๋ ๊นŒ์š”? ๋‚ด ์ธ์ƒ์€ ์–ด๋Š ์ •๋„ ๋ฆด๋ฆฌ์Šค๋˜๋Š” ๊ฒƒ์ด ํ•„์ˆ˜์ ์ด๋ฉฐ ์œ ์ตํ•˜๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. #2227์€ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ #3520์—๋Š” ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์„ค๋ช…๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค(๋ฆฌํฌํ„ฐ์˜ ์ด์˜ ์—†์Œ).

๊ฐ์‚ฌ ํ•ด์š”. Dan์€ ๊ท€ํ•˜์˜ ์˜๊ฒฌ์— ๋™์˜ํ–ˆ์œผ๋ฉฐ ์ด ๋ฆด๋ฆฌ์Šค์—์„œ ์ฐจ๋‹จ๊ธฐ๋กœ #2227์„ ์ œ๊ฑฐํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ๊ฑฐ๊ธฐ์— ๋Œ“๊ธ€์„ ๋‹ฌ์•„ #3520์— ๋„์›€์„ ์ค„ ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ •๋ง ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋‹ค์Œ pipenv๋ฅผ ์ถœ์‹œํ•˜๊ธฐ ์ „์— "๊ด€๋ จ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์ƒˆ ๋ฆด๋ฆฌ์Šค๋ฅผ ๋งŒ๋“ค๊ธฐ"๊ฐ€ ์—„๊ฒฉํ•˜๊ฒŒ ํ•„์š”ํ•ฉ๋‹ˆ๊นŒ? #3613์„ ์‚ดํŽด๋ณด๋‹ค๊ฐ€ ํ˜„์žฌ ๋งˆ์Šคํ„ฐ ๋ธŒ๋žœ์น˜๊ฐ€ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค...

๋‚˜๋Š” ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๊ฐ€ ์ค‘์š”ํ•˜์ง€ ์•Š๋‹ค๊ณ  ์ œ์•ˆํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ด๋ฏธ ๋งˆ์Šคํ„ฐ์˜ ๊ฐœ์„  ์‚ฌํ•ญ์ด ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์ „๋‹ฌ๋˜๋Š” ๊ฒƒ์„ ๋ฐฉํ•ดํ•ด์„œ๋Š” ์•ˆ๋œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ์ดํ•ดํ•˜๋Š” ํ•œ ์ด๋Ÿฌํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” pipenv ๊ธฐ๋Šฅ์— ์ค‘์š”ํ•  ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ง€์›๋˜๋Š” OS/ํ™˜๊ฒฝ ์กฐํ•ฉ์—์„œ ๋ฆด๋ฆฌ์Šค๊ฐ€ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด pipenv๋ฅผ ์ ์ ˆํ•˜๊ฒŒ ํ…Œ์ŠคํŠธํ•ฉ๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ํ‹€๋ฆด ์ˆ˜๋„ ์žˆ์ง€๋งŒ Dan์€ "์š”์ฆ˜ ๋Œ€๋ถ€๋ถ„์˜ ์ž‘์—…์€ ๋ณด์กฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค"๋ผ๊ณ  ๋งํ–ˆ์Šต๋‹ˆ๋‹ค.

์ปค๋ฎค๋‹ˆํ‹ฐ๊ฐ€ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ๋Š” ๊ณณ์„ ์ฐจ๋‹จํ•˜๋Š” ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์†์„ ๋‚ด๋ฐ€๊ฒŒ ๋˜์–ด ๊ธฐ์ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋ฆด๋ฆฌ์Šค ์—…๋ฐ์ดํŠธ ๋ฐ ๋ฌธ์„œ ์—…๋ฐ์ดํŠธ๋งŒ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

pipenv์˜ GitHub ๋ฌธ์ œ์—์„œ ์ƒˆ ์‚ฌ์šฉ์ž์˜ ์งˆ๋ฌธ์— ๋‹ตํ•˜์—ฌ ๋„์›€์„ ์ฃผ์„ธ์š”. ๊ทธ๋ ‡๊ฒŒ ํ•˜๋ฉด Dan์€ ์‘๋‹ต์— ๋Œ€ํ•ด ๊ฑฑ์ •ํ•  ํ•„์š”๊ฐ€ ์—†์œผ๋ฉฐ ์ด๋ฒˆ ๋ฆด๋ฆฌ์Šค์— ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ถœ์‹œ๋ฅผ ์•ž๋‘๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค!

distutils-sig ์—์„œ @techalchemy ์˜ ์ƒˆ๋กœ์šด ์—…๋ฐ์ดํŠธ ์ด๋ฉ”์ผ( pypa-dev ๋ชฉ๋ก์— ๋ฏธ๋Ÿฌ๋ง๋จ ). ๋„์›€์ด ๋  ์ˆ˜ ์žˆ๋Š” ๋ช‡ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

@AEHamrick ๊ท€ํ•˜์˜ ์˜๊ฒฌ์„ ๋ณด์•˜์Šต๋‹ˆ๋‹ค. https://github.com/pypa/pipenv/issues/3742#issuecomment -498312920 -- #3382 ๋ฐ #3757์„ ๊ฐ„๋‹จํžˆ ์‚ดํŽด๋ณด์•˜๋Š”๋ฐ, ์ด๋ฏธ ๋งˆ์Šคํ„ฐ์—์„œ ์ˆ˜์ •๋œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋งž๋‚˜์š”? ์•„์ง ๋งˆ์Šคํ„ฐ์—์„œ ์ˆ˜์ •๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ์—ฌ๊ธฐ์— ์˜๊ฒฌ์„ ๋‚จ๊ฒจ์ฃผ์‹œ๋ฉด ๋ฆด๋ฆฌ์Šค ๋งˆ์ผ์Šคํ†ค์— ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌ ํ•ด์š”!

@brainwane ์•ˆ๋…•ํ•˜์„ธ์š”, ์ฒดํฌ์ธ ํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์†”์งํžˆ ๋งํ•ด์„œ ์—ฌ๊ธฐ์—์„œ ํ™œ๋™์ด ๋ถ€์กฑํ•˜์—ฌ ๊ฝค ์˜ค๋ž˜ ์ „์— Poetry๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์ง€๋งŒ ์‹œ๊ฐ„์ด ๋˜๋ฉด ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์„ ์„ค์ •ํ•˜๊ณ  ๋‚ด๊ฐ€ ๋‹นํ–ˆ๋˜ ์ƒํ™ฉ์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ ๋ฒ„๊ทธ๋Š” ์ด์ œ ๊ดœ์ฐฎ์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

@AEHamrick ์„ ์™„์ „ํžˆ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

@techalchemy ๊ฐ€ ๋” ๋‚˜์•„๊ฐˆ ์ˆ˜ ์žˆ๋„๋ก ์–ด์ œ ๋” ๋งŽ์€ ์‹œ๊ฐ„์„ ๊ธฐ๋ถ€ํ–ˆ์Šต๋‹ˆ๋‹ค. Dan์€ pythonfinder ๋ฐ requirementslib์˜ ์ƒˆ ๋ฆด๋ฆฌ์Šค๋ฅผ ๋งŒ๋“ค์—ˆ๊ณ , ๋ˆ„๋ฝ๋œ ์ข…์†์„ฑ/๊ฐ€์ ธ์˜ค๊ธฐ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๊ณต๊ธ‰์—…์ฒด ์—…๋ฐ์ดํŠธ ๋ถ„๊ธฐ๋ฅผ ๋ณ‘ํ•ฉํ•˜๋Š” ์ž‘์—…์„ ๊ณ„์†ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Š” ์˜ค๋Š˜๋„ ์—ฌ์ „ํžˆ ๊ทธ ์ผ์„ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค("์ผ๋ถ€ ํ…Œ์ŠคํŠธ๊ฐ€ ์‹คํŒจํ–ˆ์ง€๋งŒ ๋„ˆ๋ฌด ๋งŽ์ง€๋Š” ์•Š์Œ-17 / 230 ์ •๋„").

Pipenv ์œ ์ง€ ๊ด€๋ฆฌ์ž๊ฐ€ ์‹œํ—˜ํŒ์„ ๊ฒŒ์‹œํ•œ ํ›„ ์‚ฌ์šฉ์ž์˜ ์ผ๋ถ€ ์ˆ˜๋™ ํ…Œ์ŠคํŠธ๋ฅผ ํ†ตํ•ด ์ •์‹ ๋ฆด๋ฆฌ์Šค๋ฅผ ์ถ”์ง„ํ•˜๋Š” ๋ฐ ์ž์‹ ๊ฐ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์ด "Pipenv ์›Œํฌํ”Œ๋กœ ํ…Œ์ŠคํŠธ" ๋ชฉ๋ก์„ ๊ฐœ๋ฐœํ•˜๋Š” ๋ฐ ๋„์›€์„ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ์ด ๋ฌธ์ œ๋ฅผ ํŒ”๋กœ์šฐํ•˜๋Š” ์‚ฌ๋žŒ์€ ํ˜„์žฌ ์ƒํƒœ์™€ ์‚ฌ๋žŒ๋“ค์ด ๋„์šธ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์ด ํŠธ์œ— ์„ ๋ฆฌํŠธ์œ—ํ•˜๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•˜์‹ญ์‹œ์˜ค.

visir ๋Š” ์‹ค์ œ๋กœ ์ด๋ฏธ ์ตœ์‹  ์ƒํƒœ์ž…๋‹ˆ๋‹ค. TODO ๋ฆด๋ฆฌ์Šค์—์„œ ์ œ๊ฑฐํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  @techalchemy ๋Š” Pipenv ๋ฆด๋ฆฌ์Šค ํ”„๋กœ์„ธ์Šค ์ง€์นจ ๊ฐ€์ด๋“œ๋ฅผ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฑฐ๊ธฐ์— ์žˆ์–ด์•ผ ํ•  ๋‹จ๊ณ„์™€ ๊ทธ๋ ‡์ง€ ์•Š์€ ๋‹จ๊ณ„๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ์—ฌ๊ธฐ์— ๋Œ“๊ธ€์„ ๋‹ฌ๊ฑฐ๋‚˜ ํ•ด๋‹น ๋ฌธ์„œ์— ๊ธ€๋จธ๋ฆฌ ๊ธฐํ˜ธ๋ฅผ ์ถ”๊ฐ€ํ•˜์„ธ์š”.

Dan์€ feature/vendor-update ๋ถ„๊ธฐ๋ฅผ ๋ณ‘ํ•ฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

1 failed, 231 passed, 21 skipped in 442.72 seconds

Dan์€ ๋กœ์ปฌ์—์„œ ํ…Œ์ŠคํŠธ๋ฅผ ํ†ต๊ณผํ–ˆ์œผ๋ฉฐ ์ด์ œ #4169 pull ์š”์ฒญ์„ ์ˆ˜ํ–‰ํ–ˆ์œผ๋ฉฐ ํ…Œ์ŠคํŠธ ํ†ต๊ณผ๋ฅผ ํ™•์ธํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ ๊ทธ๋“ค์€ ๋งค์šฐ ๋Š๋ฆฌ๊ฒŒ ์‹คํ–‰๋˜๊ณ  ๋•Œ๋กœ๋Š” ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๊ทธ๋Š” ์ง€๊ธˆ ๋ฐ”๋กœ ๊ทธ ์ž‘์—…์„ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ Azure ๊ตฌ๋ฌธ์ด ์ž‘๋™ํ•˜๋„๋ก ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฐ€ ์ด๋Ÿฌํ•œ ํ…Œ์ŠคํŠธ ์ค‘ ์ผ๋ถ€์˜ ์†๋„๋ฅผ ์–ผ๋งˆ๋‚˜ ๋†’์ผ ์ˆ˜ ์žˆ๋Š”์ง€, ์กฐ๊ฐ์ด ๋‚˜์™”๋Š”์ง€, ๊ฐ„ํ—์ ์ธ ์‹คํŒจ๋ฅผ ์ถ”์ ํ•ด์•ผ ํ•˜๋Š”์ง€ ์—ฌ๋ถ€์— ๋”ฐ๋ผ ์˜ค๋Š˜ ์‚ฌ์ „ ์ถœ์‹œ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค! ์•„๋‹ˆ๋ฉด ์ง€๊ธˆ๋ถ€ํ„ฐ ๋ฉฐ์น ์ด ๋  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ๋žŒ๋“ค์€ ์–ด๋–ป๊ฒŒ ๋„์›€์„ ์ค„ ์ˆ˜ ์žˆ๋Š”์ง€ ๋ฌผ์—ˆ์Šต๋‹ˆ๋‹ค. ์•ž์œผ๋กœ ๋ฉฐ์น  ๋˜๋Š” ๋ช‡ ์ฃผ ๋™์•ˆ @techalchemy ๋Š” Windows์—์„œ ์ƒˆ๋กœ์šด ์‹œํ—˜ํŒ์„ ํ…Œ์ŠคํŠธํ•˜๋Š” ๋ฐ ํŠน๋ณ„ํ•œ ๋„์›€์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Windows์—์„œ ํ…Œ์ŠคํŠธํ•˜๋Š” ๋ฐ ๋„์›€์„ ์ฃผ๋ ค๋ฉด ์ด ๋Œ“๊ธ€์— ๋Œ€ํ•œ ๋ˆˆ: ์ด๋ชจํ‹ฐ์ฝ˜ ๋ฐ˜์‘์„ ์‚ฌ์šฉํ•˜์„ธ์š”.

Azure ํŒŒ์ดํ”„๋ผ์ธ ํ…œํ”Œ๋ฆฟ์— ๋Œ€ํ•ด ๋งŽ์ด ์•Œ๊ณ  ์žˆ๋Š” ๊ฒฝ์šฐ IRC ์ฑ„๋„์— ๋“ค์–ด์™€ ์˜ค๋Š˜ ๋ฐ/๋˜๋Š” ๋‚ด์ผ ๋„์›€์„ ์ฃผ๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

PR ์ง„ํ–‰ ์ƒํ™ฉ์— ๋Œ€ํ•œ ์—…๋ฐ์ดํŠธ๋Š” https://github.com/pypa/pipenv/pull/4169#issuecomment -607348834๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

Dan์€ ํ…Œ์ŠคํŠธ๋ฅผ ํ†ต๊ณผํ•˜๋Š” ๋ฐ ๊ณ„์†ํ•ด์„œ ์ง„์ „์„ ์ด๋ฃจ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค(#4169์— ๋Œ€ํ•œ ์ฃผ์„์— ๋”ฐ๋ฅด๋ฉด ํ…Œ์ŠคํŠธ๊ฐ€ ๋ช‡ ๋‹ฌ ์ „์— ์‹คํŒจํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋Š” ์ด PR๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์—ฌ๊ธฐ์—์„œ ๋ฐฑ๋กœ๊ทธ๋œ ๊ธฐ์ˆ  ๋ถ€์ฑ„๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค). ํ˜„์‹ค์„ ๋ฐ˜์˜ํ•˜์—ฌ ์ด์Šˆ ์ œ๋ชฉ์„ ๋ณ€๊ฒฝํ•˜์˜€์Šต๋‹ˆ๋‹ค.

PR ์ง„ํ–‰ ์ƒํ™ฉ์— ๋Œ€ํ•œ ํ–‰๋ณตํ•œ ์—…๋ฐ์ดํŠธ๋Š” https://github.com/pypa/pipenv/pull/4169#issuecomment -610017500์„ ์ฐธ์กฐํ•˜์„ธ์š”.

Azure์—์„œ Windows ํ…Œ์ŠคํŠธ ์‹คํŒจ๋ฅผ ํŒŒ์•…ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ๋‹ค๋ฉด #4169๋ฅผ ์‚ดํŽด๋ณด๊ณ  ์˜๊ฒฌ์„ ๋ณด๋‚ด์ฃผ์‹ญ์‹œ์˜ค.

๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ๋„์šธ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•:

#4169์—์„œ Windows ๋ฐ Azure ํ…Œ์ŠคํŠธ ์ „๋ฌธ ์ง€์‹์„ ์ œ๊ณตํ•œ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค!

Dan์€ #4169๋ฅผ ๋ฐฉ๊ธˆ ๋ณ‘ํ•ฉํ–ˆ์œผ๋ฉฐ ์ƒˆ๋กœ์šด ์‹œํ—˜ํŒ์„ ๋งŒ๋“ค๊ธฐ ์ „์— ๋‹ค๋ฅธ pull ์š”์ฒญ๋„ ๋ณ‘ํ•ฉํ•ด์•ผ ํ•˜๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. @techalchemy ๊ฐ€ ์‹œํ—˜ํŒ์„ ๋งŒ๋“ค๊ณ  ๋‚˜๋ฉด ํ…Œ์ŠคํŠธ์— ๋„์›€์„ ์š”์ฒญํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋กœ๋“œ๋งต, ๊ธฐ์—ฌ์ž ๋ฐ ์œ ์ง€ ๊ด€๋ฆฌ์ž ํ”„๋กœ์„ธ์Šค ๊ฐœ์„ ์— ๋Œ€ํ•œ ์žฅ๊ธฐ ๊ณ„ํš์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ๋ณ„๋„์˜ ๋ฌธ์ œ #4130์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ƒˆ ๋ฌธ์ œ #4188์€ ๊ธฐ์กด ์„ค์น˜๋ฅผ ๊นจ๋œจ๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์— ๊ธด๊ธ‰ ์ˆ˜์ •์ด ํ•„์š”ํ•˜๋ฏ€๋กœ Dan์ด ๋จผ์ € ์ˆ˜์ • ์ž‘์—…์„ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์— ๋”ฐ๋ผ ์ด ๋ฌธ์ œ์˜ ์‹œ์ž‘ ๋ถ€๋ถ„์— ์ฒดํฌ๋ฆฌ์ŠคํŠธ๋ฅผ ์—…๋ฐ์ดํŠธํ–ˆ์Šต๋‹ˆ๋‹ค.

@techalchemy ๋Š” ๋ฆด๋ฆฌ์Šค ์ฐจ๋‹จ๊ธฐ๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด ๊ธฐ์กด ๋ฌธ์ œ๋ฅผ ๋” ์ž์„ธํžˆ ์กฐ์‚ฌํ•  ์ƒ๊ฐ์ด ์—†์Šต๋‹ˆ๋‹ค. ํ”„๋ฆฌ๋ฆด๋ฆฌ์ฆˆ๋ฅผ ๊ฒŒ์‹œํ•˜๊ณ  ํ…Œ์Šคํ„ฐ๋ฅผ ๋ชจ์ง‘ํ•œ ํ›„ ๋ฌธ์ œ๋ฅผ ์กฐ์‚ฌํ•˜์—ฌ ์ƒˆ ๋ฆด๋ฆฌ์Šค๋ฅผ ์ฐจ๋‹จํ•ด์•ผ ํ•˜๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

์ด์ œ ๊ทธ์™€ ๋‹ค๋ฅธ pipenv ๊ฐœ๋ฐœ์ž๊ฐ€ Windows ํ…Œ์ŠคํŠธ ๋ฌธ์ œ(#4169 ๋ฐ ๊ธฐํƒ€ PR์—์„œ)๋ฅผ ํ•ด๊ฒฐํ–ˆ๊ณ  Dan์€ #4188์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋™์•ˆ(์–ด์ œ ์ „ํ™”๋ฅผ ๊ฑธ์–ด์ค€ PyUp ์‚ฌ์šฉ์ž ๋•๋ถ„์—) ํ”„๋ฆฌ๋ฆด๋ฆฌ์ฆˆ๋ฅผ ๊ฐ–๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ์ฃผ๋ง์ด๋‚˜ ์›”์š”์ผ์— pipenv๋ฅผ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค. ๋ฒ„์ „ ๋ฒˆํ˜ธ๋Š” ์ž ์ •์ ์œผ๋กœ 2020.04.1a1์ด ๋  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์•ฝ ์ผ์ฃผ์ผ ๋™์•ˆ ์ˆ˜๋™ ํ…Œ์ŠคํŠธ ๋ฅผ ์ˆ˜ํ–‰ํ•  ํ…Œ์Šคํ„ฐ๋ฅผ ๋ชจ์ง‘ํ•ฉ๋‹ˆ๋‹ค.

์•„์ง ๊ณ ์น  ์ˆ˜ ์—†์ง€๋งŒ ๋ณ‘๋ ฌ ์•ˆ์ „ํ•˜์ง€ ์•Š์€ ํ…Œ์ŠคํŠธ๊ฐ€ ํ•˜๋‚˜ ์ด์ƒ ์žˆ์Šต๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ๋Š” .azure-pipelines/steps/run-tests-windows.yml pytest -n 3 ๋กœ ์‹คํ–‰๋˜์ง€๋งŒ ์บ์‹œ ์ง€์šฐ๊ธฐ ํ…Œ์ŠคํŠธ test_pipenv_clear in tests\integration\test_cli.py ์™€ ๊ฐ™์€ ์ž„์˜์˜ ์‹คํŒจ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์•„๋งˆ๋„ ๋ชจ๋“  cli ํ…Œ์ŠคํŠธ๋Š” ์บ์‹œ ๊ฒฝ๋กœ๋ฅผ ๊ณต์œ ํ•˜๋ฉฐ ๋ณ‘๋ ฌ๋กœ ์‹คํ–‰ํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ๊ฐ PipEnvInstance๊ฐ€ ๋ณ„๋„์˜ ๋ฃจํŠธ/ํ™ˆ ๊ฒฝ๋กœ๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋™์ผํ•œ ์ฝ”๋“œ์˜ ๋‘ ๊ฐ€์ง€ ์‹คํ–‰๋„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.
https://github.com/bneijt/pipenv/runs/596610863?check_suite_focus=true
https://github.com/bneijt/pipenv/runs/596726284?check_suite_focus=true

๋‹ค์Œ ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์ง€๋งŒ ํ”„๋กœ์ ํŠธ๊ฐ€ ์ฒ˜์Œ์ด๋ผ ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

  • ๋Œ์–ด์˜ค๊ธฐ ๋Œ€์‹  ์˜ˆ์•ฝ๋œ ๋นŒ๋“œ์— ๋Œ€ํ•œ PR์„ ์„ค์ •ํ•˜๋ฉด ๋ณ€๊ฒฝ ์—†์ด ๋นŒ๋“œ๊ฐ€ ์‹คํŒจํ•  ๊ฒฝ์šฐ ๋” ๋งŽ์€ ํ†ต์ฐฐ๋ ฅ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • CLI ์ œํ’ˆ๊ตฐ์— ๋Œ€ํ•œ ๋ณ‘๋ ฌ ํ…Œ์ŠคํŠธ ๋น„ํ™œ์„ฑํ™”
  • PipenvInstance๊ฐ€ ๊ฐ ์ธ์Šคํ„ด์Šค์— ๋Œ€ํ•ด ๊ณ ์œ ํ•œ ์บ์‹œ ๊ฒฝ๋กœ๋ฅผ ์„ค์ •ํ•˜๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.
  • ๋ฌธ์ œ๋ฅผ ๋งŒ๋“ค๊ณ  ๋‹ค๋ฅธ ์‹œ๊ฐ„ ๋™์•ˆ ๊ทธ๋Œ€๋กœ ๋‘ก๋‹ˆ๋‹ค.

์กฐ์–ธ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

pipenv ๋ฆด๋ฆฌ์Šค๋ฅผ ์ง€์›ํ•ด ์ฃผ์‹  ๋ชจ๋“  ๋ถ„๋“ค๊ป˜ ๊ฐ์‚ฌ์˜ ์ธ์‚ฌ๋ฅผ ์ „ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๋งค์šฐ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. pipenv๋Š” ์ดˆ๋ณด์ž๊ฐ€ ์ฒ˜์Œ์— ๊ท€์ฐฎ๊ฒŒ ํ•  ํ•„์š”๊ฐ€ ์—†๋Š” ๋งŽ์€ virtualenv ๋ฒˆ๊ฑฐ๋กœ์›€์„ ์ถ”์ƒํ™”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํŠนํžˆ Python ์ดˆ๋ณด์ž๋ฅผ ์œ„ํ•œ ๋„๊ตฌ์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ข‹์€ ๋ฌผ๊ฑด!

์•ˆ๋…• ๋ชจ๋‘ ๊ทธ๋ƒฅ ์ฒดํฌ์ธ -- ์ข…์† ๋ฆด๋ฆฌ์Šค์— ์†์ƒ๊ณผ ๋ช‡ ๊ฐ€์ง€ ๋” ํ‘ธ๋ฅธ ๋ฌธ์ œ์™€ ํ•จ๊ป˜ ์‚ฌ์†Œํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ์˜ค๋Š˜ ๋ฐค๋ถ€ํ„ฐ ๋ชจ๋“  ๊ฒƒ์ด ๋…น์ƒ‰์ด๋ฏ€๋กœ ๋‚ด์ผ ์‚ฌ์ „ ์ถœ์‹œ๋ฉ๋‹ˆ๋‹ค :) ๊ธฐ๋‹ค๋ ค ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

๋˜ ๋‹ค๋ฅธ ๊ฐ„๋‹จํ•œ ์—…๋ฐ์ดํŠธ๋กœ, ๋ณต์‚ฌ๋ณธ์„ ์†์— ๋„ฃ๊ณ  ์‹ถ์–ดํ•˜๋Š” ๋ชจ๋“  ์‚ฌ๋žŒ์„ ์œ„ํ•ด ์ž ์‹œ ๋™์•ˆ https://test.pypi.org์— ๋นŒ๋“œ๋ฅผ ๊ฒŒ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” pip install --index-url=https://test.pypi.org pipenv ๋ฅผ ํ†ตํ•ด ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„์ง ์ด ๋นŒ๋“œ์— ๋Œ€ํ•œ ์œ ํšจ์„ฑ์„ ๊ฒ€์‚ฌํ•˜์ง€ ์•Š์•˜์ง€๋งŒ ํ…Œ์ŠคํŠธ PyPI์—์„œ ์ด๋ฆ„์˜ ์†Œ์œ ๊ถŒ์„ ์ฃผ์žฅํ•˜๊ธฐ ์œ„ํ•ด ๋ฌด์–ธ๊ฐ€๋ฅผ ๊ฒŒ์‹œํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. :)

์—ฌ๊ธฐ์„œ ๋งˆ์ง€๋ง‰ ๋‹จ๊ณ„๋Š” ์ผ๋ จ์˜ ๋ฆด๋ฆฌ์Šค๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด github ์ž‘์—…์„ ํฌํŒ…ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋จผ์ € ํ…Œ์ŠคํŠธ ์ธ์Šคํ„ด์Šค๋กœ ์ด๋™ํ•œ ๋‹ค์Œ ์‹ค์ œ ๋ฆด๋ฆฌ์Šค๋ฅผ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๋‚ด๊ฐ€ ํ˜„์žฌ ๋Œ€๋ถ€๋ถ„์˜ ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ์—์„œ ๋ฆด๋ฆฌ์Šค๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋ฉฐ ๋‹จ์ผ ์‹คํŒจ ์ง€์ ์œผ๋กœ ๋‚˜๋ฅผ ์ œ๊ฑฐํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ”„๋กœ์„ธ์Šค๋ฅผ ์ข€ ๋” ์›ํ™œํ•˜๊ฒŒ ๋งŒ๋“ค ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์–‘ํ•ดํ•ด ์ฃผ์…”์„œ ๋‹ค์‹œ ํ•œ ๋ฒˆ ๊ฐ์‚ฌ๋“œ๋ฆฌ๋ฉฐ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์•Œ๋ ค์ฃผ์„ธ์š”.

@techalchemy ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ์ฐธ๊ณ ๋กœ ์ด๊ฒƒ์€ ๋‚˜๋ฅผ ์œ„ํ•ด ์ผํ–ˆ์Šต๋‹ˆ๋‹ค.

pip install -i https://test.pypi.org/simple/ pipenv

pip uninstall pipenv ๋ฅผ ์ˆ˜ํ–‰ํ•œ ํ›„

ํŠน์ • ๋ฒ„์ „์˜ pip๋ฅผ ์„ค์น˜ํ•ด์•ผ ํ•˜๋Š” ์š”๊ตฌ ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๊นŒ? pipenv ์ž์ฒด ๋‚ด์—์„œ ๊ณต๊ธ‰ ์—…์ฒด๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์ง€๋งŒ ๋‹ค์Œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

ํŒŒ์ผ "C:UsersaaAppDataRoamingPythonPython36site-packagespipenvcore.py", do_install_dependencies์˜ 862ํ–‰
normal_deps, procs, failed_deps_queue, requirements_dir, install_kwargsํŒŒ์ผ "C:UsersaaAppDataRoamingPythonPython36site-packagespipenvcore.py", 776ํ–‰, batch_installuse_pep517=use_pep517,pip_install์˜ ํŒŒ์ผ "C:UsersaaAppDataRoamingPythonPython36site-packagespipenvcore.py", 1484ํ–‰no_deps=no_deps, require_hashes=๋ฌด์‹œ_ํ•ด์‹œ ์•„๋‹˜get_pip_args์˜ ํŒŒ์ผ "C:UsersaaAppDataRoamingPythonPython36site-packagespipenvcore.py", 1341ํ–‰project.environment.pip_version >= parse_version("19.0")์ธ ๊ฒฝ์šฐ:ํ™˜๊ฒฝ์˜ ํŒŒ์ผ "C:UsersaaAppDataRoamingPythonPython36site-packagespipenvproject.py", 343ํ–‰self._environment.extend_dists(pipenv_dist)"C:UsersaaAppDataRoamingPythonPython36site-packagespipenvenvironment.py" ํŒŒ์ผ, 102ํ–‰, extend_distsextras = self.resolve_dist(dist, self.base_working_set)resolve_dist์˜ ํŒŒ์ผ "C:UsersaaAppDataRoamingPythonPython36site-packagespipenvenvironment.py", 97ํ–‰dist = working_set.find(req)ํŒŒ์ผ "C:UsersaaAppDataRoamingPythonPython36site-packagesspkg_resources__init__.py", 644ํ–‰, ์ฐพ๊ธฐVersionConflict(dist, req) ์˜ฌ๋ฆฌ๊ธฐpkg_resources.VersionConflict: ( pip 9.0.1 (c:programdataanaconda3libsite-packages), Requirement.parse('pip>=18.0')**)

์šฐ๋ฆฌ๋Š” python 3.6.0์„ ์‹คํ–‰ ์ค‘์ด๊ณ  pip์˜ ๊ธ€๋กœ๋ฒŒ ๋ฒ„์ „์„ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๊ฒƒ์„ ๊บผ๋ฆฝ๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ์ด์ „์—๋Š” pip install blah ๋ฅผ ๋” ์ด์ƒ ์‹คํ–‰ํ•  ์ˆ˜ ์—†๊ณ  python -m pip install blah ํ•ด์•ผ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

@techalchemy ์—ด์‹ฌํžˆ ์ผํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ์ถœ์‹œ๋ฅผ ๊ธฐ๋Œ€ํ•ฉ๋‹ˆ๋‹ค

pip install --index-url= https://test.pypi.org pipenv๋ฅผ ํ†ตํ•ด ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์„ virtualenv์—์„œ ๋น ๋ฅด๊ฒŒ ์‹œ๋„ํ–ˆ๊ณ  ๋‹ค์Œ์„ ์–ป์—ˆ์Šต๋‹ˆ๋‹ค.

> pip install -i https://test.pypi.org/simple/ pipenv
Looking in indexes: https://test.pypi.org/simple/
Collecting pipenv
  Downloading https://test-files.pythonhosted.org/packages/d7/0d/aa8ee85ece59f7ee27282a6a39ec1d061560d76b27a5c40a4b478473a5dd/pipenv-2020.4.1a1-py2.py3-none-any.whl (3.8 MB)
     |โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 3.8 MB 1.7 MB/s 
Requirement already satisfied: pip>=18.0 in ./.venc/lib/python3.6/site-packages (from pipenv) (20.0.2)
Requirement already satisfied: setuptools>=36.2.1 in ./.venc/lib/python3.6/site-packages (from pipenv) (46.1.3)
Collecting certifi
  Downloading https://test-files.pythonhosted.org/packages/0e/67/0383b38ee00ffa9f93348998d0b474c1f5aa4a4ff562957294f1477a47b5/certifi-2016.8.8-py2.py3-none-any.whl (384 kB)
     |โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 384 kB 4.1 MB/s 
ERROR: Could not find a version that satisfies the requirement virtualenv-clone>=0.2.5 (from pipenv) (from versions: none)
ERROR: No matching distribution found for virtualenv-clone>=0.2.5 (from pipenv)

test.pypi.org์—์„œ virtualenv-clone์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์ด๋ผ๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. venv์— ์ˆ˜๋™์œผ๋กœ virtualenv-clone ๋ฐ virtualenv ๋ฅผ ์„ค์น˜ํ•˜๋Š” ๊ฒƒ์ด ๋‚˜์—๊ฒŒ ๋„์›€์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ๋ถ„๋“ค์—๊ฒŒ ๋„์›€์ด ๋  ๊ฒƒ ๊ฐ™์•„ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค :)

@JeanFred ์‹œ๋„:

pip uninstall pipenv

๊ทธ๋Ÿฐ ๋‹ค์Œ ์„ค์น˜๋ฅผ ๋‹ค์‹œ ์‹คํ–‰ํ•˜์‹ญ์‹œ์˜ค.

๋ฐฉ๊ธˆ ํ˜„์žฌ pipenv๋ฅผ ์—…๋ฐ์ดํŠธํ–ˆ์Šต๋‹ˆ๋‹ค.

pip install -i https://test.pypi.org/simple/ -U pipenv

๋งค๋ ฅ์ฒ˜๋Ÿผ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค! @techalchemy ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

@bneijt ๋ฐœ๊ฒฌํ•œ ํ…Œ์ŠคํŠธ ์ทจ์•ฝ์„ฑ์— ๋Œ€ํ•œ ์ƒˆ๋กœ์šด ๋ฌธ์ œ๋ฅผ ์ œ์ถœํ•˜๋Š” ๊ฒƒ์ด ์ข‹์€ ์ƒ๊ฐ์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์—ฌ๊ธฐ์˜ ์‹œํ—˜ํŒ ํ…Œ์ŠคํŠธ ํ”ผ๋“œ๋ฐฑ์—์„œ ์ •๋ณด๊ฐ€ ์†์‹ค๋ ๊นŒ ๋‘๋ ต๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

@JeanFred ์— ๋Œ€ํ•œ ํ›„์† ์กฐ์น˜๊ฐ€ ์—†๋Š” ์ ์— ๋Œ€ํ•ด ์‚ฌ๊ณผ๋“œ๋ฆฝ๋‹ˆ๋‹ค pip install --index-url https://test.pypi.org/simple --extra-index-url https://pypi.org/simple --pre pipenv ๋กœ ์ผ์‹œ์ ์œผ๋กœ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์กฐ๊ธˆ๋งŒ ๊ธฐ๋‹ค๋ ค์ฃผ์‹œ๋ฉด ๊ณง PyPI๋กœ ํ”„๋ฆฌ๋ฆด๋ฆฌ์ฆˆ๋ฅผ ํ‘ธ์‹œํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

@JeanFred ์— ๋Œ€ํ•œ ํ›„์† ์กฐ์น˜๊ฐ€ ์—†๋Š” ์ ์— ๋Œ€ํ•ด ์‚ฌ๊ณผ๋“œ๋ฆฝ๋‹ˆ๋‹ค pip install --index-url https://test.pypi.org/simple --extra-index-url https://pypi.org/simple --pre pipenv ๋กœ ์ผ์‹œ์ ์œผ๋กœ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์กฐ๊ธˆ๋งŒ ๊ธฐ๋‹ค๋ ค์ฃผ์‹œ๋ฉด ๊ณง PyPI๋กœ ํ”„๋ฆฌ๋ฆด๋ฆฌ์ฆˆ๋ฅผ ํ‘ธ์‹œํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š” @techalchemy , ์ˆ˜๊ณ ํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ๋‚ด๊ฐ€ ๋„ˆ๋ฌด ๋นจ๋ž๋‚˜?

# pip install --index-url https://test.pypi.org/simple --extra-index-url https://pypi.org/simple --pre pipenv
Looking in indexes: https://test.pypi.org/simple, https://pypi.org/simple
Collecting pipenv
  Downloading https://test-files.pythonhosted.org/packages/d7/0d/aa8ee85ece59f7ee27282a6a39ec1d061560d76b27a5c40a4b478473a5dd/pipenv-2020.4.1a1-py2.py3-none-any.whl (3.8MB)
    100% |โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 3.8MB 368kB/s 
Requirement already satisfied: setuptools>=36.2.1 in /usr/lib/python3/dist-packages (from pipenv) (40.8.0)
Collecting virtualenv-clone>=0.2.5 (from pipenv)
Could not install packages due to an EnvironmentError: 404 Client Error: Not Found for url: https://test.pypi.org/simple/virtualenv-clone/

์•ˆ๋…•ํ•˜์„ธ์š”. ํ…Œ์ŠคํŠธ pypi์˜ ๋ณต์žก์„ฑ์„ ํ”ผํ•  ์ˆ˜ ์žˆ๋„๋ก ์‹œํ—˜ํŒ์„ ์ผ๋ฐ˜ pypi๋กœ ํ‘ธ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ถ€๋‹ด ์—†์ด pip install --upgrade --pre pipenv 2020.4.1b1 ์„ค์น˜๊ฐ€ ํ‘œ์‹œ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‚ด์ผ ์ž ์„ ์ž˜ ๋•Œ ๋” ์ž์„ธํ•œ ๋‚ด์šฉ์„ ๋ณด๋‚ด ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์„ ์กฐ๊ธˆ ํ…Œ์ŠคํŠธํ•˜๊ณ  ์‹ถ์€ ์‚ฌ๋žŒ์€ ์ด ๋ฌธ์„œ ์— ๋‚˜์—ด๋œ ์ˆ˜๋™ ์›Œํฌํ”Œ๋กœ๋ฅผ ์ฐธ์กฐํ•˜๊ฑฐ๋‚˜ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌ์ถ•ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

๊ธฐ๋‹ค๋ ค ์ฃผ์…”์„œ ๋‹ค์‹œ ํ•œ ๋ฒˆ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค!

์‹ ๋‚œ๋‹ค! ์ด ์ผ์„ ํ•˜๋Š” ๋ชจ๋“  ๋ถ„๋“ค๊ป˜ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

์•„์ง ์ด ๋ชจ๋“  ๊ฒƒ์„ ์ฝ์ง€๋Š” ์•Š์•˜์ง€๋งŒ ์•ŒํŒŒ ๋ฆด๋ฆฌ์Šค์™€ ๋ฒ ํƒ€ ๋ฒ„์ „์„ ๋ณธ ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. Fedora์—์„œ ์šฐ๋ฆฌ๋Š” ํ”„๋ฆฌ๋ฆด๋ฆฌ์ฆˆ๋ฅผ ํ…Œ์ŠคํŠธํ•  ๊ฒƒ์ด์ง€๋งŒ, ์šฐ๋ฆฌ๋Š” ๋ฉฐ์น ์ด ํ•„์š”ํ•˜๊ณ  ์•ŒํŒŒ ์ดํ›„์˜ ๋น ๋ฅธ ๋ฒ ํƒ€๋Š” ๋‚˜๋ฅผ ์กฐ๊ธˆ ๋†€๋ผ๊ฒŒ ํ–ˆ์Šต๋‹ˆ๋‹ค.

@hroncok ๋ฉ”์ธ pypi์˜ ์•ŒํŒŒ ๋ฆด๋ฆฌ์Šค๋Š” ์ฃผ๋กœ ๋ฆด๋ฆฌ์Šค ์ž๋™ํ™” ๋ณ€๊ฒฝ์„ ๊ฒ€์ฆํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ด์—ˆ์œผ๋ฉฐ ๋ฒ ํƒ€ ๋ฆด๋ฆฌ์Šค๋Š” ์ตœ์†Œ ์ผ์ฃผ์ผ ๋™์•ˆ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. ์‹œ๊ฐ„์ด ๋” ํ•„์š”ํ•˜๊ฑฐ๋‚˜ ์žฌํฌ์žฅ์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ IRC์—์„œ ์ €์—๊ฒŒ ํ•‘์„ ๋ณด๋‚ด์ฃผ์‹ญ์‹œ์˜ค.

์‹œ๊ฐ„์ด ๋” ํ•„์š”ํ•˜๊ฑฐ๋‚˜ ์žฌํฌ์žฅ์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ IRC์—์„œ ์ €์—๊ฒŒ ํ•‘์„ ๋ณด๋‚ด์ฃผ์‹ญ์‹œ์˜ค.

ํ•„์š”ํ•œ ๊ฒฝ์šฐ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

ํŽธ์ง‘: ์—ฌ๊ธฐ์—์„œ ๋งŽ์€ "์ƒˆ๋กœ์šด ๋ฆด๋ฆฌ์Šค๊ฐ€ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค" ์‚ฌ์šฉ์ž ๋ณด๊ณ ์„œ๊ฐ€ ์˜์‹ฌ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ๊ธฐ์—์„œ ๊ตฌ๋…์„ ์ทจ์†Œํ–ˆ์Šต๋‹ˆ๋‹ค.

@techalchemy ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ์ด๋ฏธ ํ”„๋กœ์ ํŠธ์—์„œ ํ…Œ์ŠคํŠธ๋˜์—ˆ์œผ๋ฉฐ ์ž˜ ์ž‘๋™ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค!

# pip uninstall -y virtualenv virtualenv-clone pipenv
Uninstalling virtualenv-20.0.18:
  Successfully uninstalled virtualenv-20.0.18
Uninstalling virtualenv-clone-0.5.4:
  Successfully uninstalled virtualenv-clone-0.5.4
Uninstalling pipenv-2020.4.1a1:
  Successfully uninstalled pipenv-2020.4.1a1
# pip install --pre pipenv
Collecting pipenv
  Downloading https://files.pythonhosted.org/packages/c6/ae/de435f1da25056a181cbc3241d747b521f0caf8db0e5ca19400b9f120e7d/pipenv-2020.4.1b1-py2.py3-none-any.whl (3.8MB)
    100% |โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 3.8MB 391kB/s 
Collecting virtualenv-clone>=0.2.5 (from pipenv)
  Using cached https://files.pythonhosted.org/packages/83/b8/cd931487d250565392c39409117436d910232c8a3ac09ea2fb62a6c47bff/virtualenv_clone-0.5.4-py2.py3-none-any.whl
Requirement already satisfied: setuptools>=36.2.1 in /usr/lib/python3/dist-packages (from pipenv) (40.8.0)
Requirement already satisfied: certifi in /usr/lib/python3/dist-packages (from pipenv) (2018.8.24)
Requirement already satisfied: pip>=18.0 in /usr/lib/python3/dist-packages (from pipenv) (18.1)
Collecting virtualenv (from pipenv)
  Using cached https://files.pythonhosted.org/packages/23/1a/d55f5fb904564365c3d364fd41701a74ad497379f04fd548cccc3f227d98/virtualenv-20.0.18-py2.py3-none-any.whl
Requirement already satisfied: filelock<4,>=3.0.0 in /usr/local/lib/python3.7/dist-packages (from virtualenv->pipenv) (3.0.12)
Requirement already satisfied: distlib<1,>=0.3.0 in /usr/local/lib/python3.7/dist-packages (from virtualenv->pipenv) (0.3.0)
Requirement already satisfied: importlib-metadata<2,>=0.12; python_version < "3.8" in /usr/local/lib/python3.7/dist-packages (from virtualenv->pipenv) (1.6.0)
Requirement already satisfied: six<2,>=1.9.0 in /usr/lib/python3/dist-packages (from virtualenv->pipenv) (1.12.0)
Requirement already satisfied: appdirs<2,>=1.4.3 in /usr/local/lib/python3.7/dist-packages (from virtualenv->pipenv) (1.4.3)
Requirement already satisfied: zipp>=0.5 in /usr/local/lib/python3.7/dist-packages (from importlib-metadata<2,>=0.12; python_version < "3.8"->virtualenv->pipenv) (3.1.0)
Installing collected packages: virtualenv-clone, virtualenv, pipenv
Successfully installed pipenv-2020.4.1b1 virtualenv-20.0.18 virtualenv-clone-0.5.4
# pipenv --version
pipenv, version 2020.4.1b1 

์š”๊ตฌ ์‚ฌํ•ญ ํŒŒ์ผ์„ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ python 3.8.2 ๋ฐ ์œ„์˜ ์ตœ์‹  pipenv์— ์žˆ์Šต๋‹ˆ๋‹ค.

Mathieus-MacBook-Pro: mhindery$ pipenv install -r requirements.txt 
Creating a virtualenv for this projectโ€ฆ
Pipfile: /<...>/Pipfile
Using /<...>/.pyenv/versions/3.8.2/bin/python3.8 (3.8.2) to create virtualenvโ€ฆ
โ ง Creating virtual environment...created virtual environment CPython3.8.2.final.0-64 in 444ms
  creator CPython3Posix(dest=/<...>-7y_bNLv7, clear=False, global=False)
  seeder FromAppData(download=False, pip=latest, setuptools=latest, wheel=latest, via=copy, app_data_dir=/<...>/virtualenv/seed-app-data/v1.0.1)
  activators BashActivator,CShellActivator,FishActivator,PowerShellActivator,PythonActivator,XonshActivator

โœ” Successfully created virtual environment! 
Virtualenv location: /<...>-7y_bNLv7
Requirements file provided! Importing into Pipfileโ€ฆ
Traceback (most recent call last):
  File "/Users/mhindery/.pyenv/versions/3.8.2/lib/python3.8/site-packages/pipenv/project.py", line 789, in write_toml
    formatted_data = tomlkit.dumps(data).rstrip()
  File "/Users/mhindery/.pyenv/versions/3.8.2/lib/python3.8/site-packages/pipenv/vendor/tomlkit/api.py", line 42, in dumps
    return data.as_string()
  File "/Users/mhindery/.pyenv/versions/3.8.2/lib/python3.8/site-packages/pipenv/vendor/tomlkit/container.py", line 343, in as_string
    s += self._render_aot(k, v)
  File "/Users/mhindery/.pyenv/versions/3.8.2/lib/python3.8/site-packages/pipenv/vendor/tomlkit/container.py", line 412, in _render_aot
    cur += self._render_aot_table(table, prefix=_key)
  File "/Users/mhindery/.pyenv/versions/3.8.2/lib/python3.8/site-packages/pipenv/vendor/tomlkit/container.py", line 421, in _render_aot_table
    if not table.is_super_table():
AttributeError: 'dict' object has no attribute 'is_super_table'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/mhindery/.pyenv/versions/3.8.2/bin/pipenv", line 10, in <module>
    sys.exit(cli())
  File "/Users/mhindery/.pyenv/versions/3.8.2/lib/python3.8/site-packages/pipenv/vendor/click/core.py", line 829, in __call__
    return self.main(*args, **kwargs)
  File "/Users/mhindery/.pyenv/versions/3.8.2/lib/python3.8/site-packages/pipenv/vendor/click/core.py", line 782, in main
    rv = self.invoke(ctx)
  File "/Users/mhindery/.pyenv/versions/3.8.2/lib/python3.8/site-packages/pipenv/vendor/click/core.py", line 1259, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/Users/mhindery/.pyenv/versions/3.8.2/lib/python3.8/site-packages/pipenv/vendor/click/core.py", line 1066, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/Users/mhindery/.pyenv/versions/3.8.2/lib/python3.8/site-packages/pipenv/vendor/click/core.py", line 610, in invoke
    return callback(*args, **kwargs)
  File "/Users/mhindery/.pyenv/versions/3.8.2/lib/python3.8/site-packages/pipenv/vendor/click/decorators.py", line 73, in new_func
    return ctx.invoke(f, obj, *args, **kwargs)
  File "/Users/mhindery/.pyenv/versions/3.8.2/lib/python3.8/site-packages/pipenv/vendor/click/core.py", line 610, in invoke
    return callback(*args, **kwargs)
  File "/Users/mhindery/.pyenv/versions/3.8.2/lib/python3.8/site-packages/pipenv/vendor/click/decorators.py", line 21, in new_func
    return f(get_current_context(), *args, **kwargs)
  File "/Users/mhindery/.pyenv/versions/3.8.2/lib/python3.8/site-packages/pipenv/cli/command.py", line 231, in install
    retcode = do_install(
  File "/Users/mhindery/.pyenv/versions/3.8.2/lib/python3.8/site-packages/pipenv/core.py", line 1982, in do_install
    import_requirements(r=project.path_to(requirements), dev=dev)
  File "/Users/mhindery/.pyenv/versions/3.8.2/lib/python3.8/site-packages/pipenv/core.py", line 230, in import_requirements
    project.add_index_to_pipfile(index, verify_ssl=trusted)
  File "/Users/mhindery/.pyenv/versions/3.8.2/lib/python3.8/site-packages/pipenv/project.py", line 990, in add_index_to_pipfile
    self.write_toml(p)
  File "/Users/mhindery/.pyenv/versions/3.8.2/lib/python3.8/site-packages/pipenv/project.py", line 793, in write_toml
    document[section] = tomlkit.container.Table()
TypeError: __init__() missing 3 required positional arguments: 'value', 'trivia', and 'is_aot_element'
Mathieus-MacBook-Pro: mhindery$ pipenv --version
pipenv, version 2020.4.1b1
Mathieus-MacBook-Pro: mhindery$ python --version
Python 3.8.2
Mathieus-MacBook-Pro:usermanagement mhindery$ pyenv --version
pyenv 1.2.18
Mathieus-MacBook-Pro: mhindery$ 

@mhindery ๋น ๋ฅธ ์ˆ˜์ •์ด #4219์— ์žˆ์Šต๋‹ˆ๋‹ค.

๋ณ„๋„์˜ #4220์—์„œ ๋ณด๊ณ ํ•œ ์ค‘์š”ํ•˜์ง€ ์•Š์€ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๋Š” ์˜ค๋ฅ˜๋ฅผ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค.

์•ˆ๋…•,
์ถœ์‹œ ํ˜•ํƒœ๋ฅผ ๋ณด๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” Mac Os์—์„œ ์‹œํ—˜ํŒ ๋ฒ„์ „์„ ์‹œ๋„ํ•˜๊ณ  ์‹ถ์—ˆ๊ณ  ์—ฌ๊ธฐ์— ์–ธ๊ธ‰๋œ 2๊ฐœ๋ฅผ ์ œ์™ธํ•˜๊ณ  ๋Œ€๋ถ€๋ถ„์˜ ์ž ๊ธˆ ๋ฐ ๋‚ด ํ”„๋กœ์ ํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์น˜๊ฐ€ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค.
https://github.com/pypa/pipenv/issues/4227

@techalchemy ๋Š” Python์˜ Discourse ํฌ๋Ÿผ์—์„œ ๋‹ค์Œ์„ ํฌํ•จํ•œ ์„ธ๋ถ€ ์ •๋ณด์™€ ํ•จ๊ป˜ ์‹œํ—˜ํŒ์„ ๋ฐœํ‘œํ–ˆ์Šต๋‹ˆ๋‹ค .

  • ๋ฐœ๋งค ๋ชฉํ‘œ (5์›” 7์ผ ๋ชฉ์š”์ผ)
  • ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ(ํ•˜์ด๋ผ์ดํŠธ ๋ฐ ์ „์ฒด ๋ณ€๊ฒฝ ๋กœ๊ทธ)
  • Pipenv๊ฐ€ ํ…Œ์ŠคํŠธ์— ๋„์›€์ด ํ•„์š”ํ•œ ๊ฒƒ
  • ํ”„๋กœ์ ํŠธ์˜ ๊ธฐํƒ€ ๋ณ€๊ฒฝ ์‚ฌํ•ญ: ํ”„๋กœ์„ธ์Šค ๋ฐ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ๋ณ€๊ฒฝ, ๋ฆด๋ฆฌ์Šค ์ฃผ๊ธฐ ๋ฐ ์žฌ์ • ์ง€์›
  • ๊ณ ๋งˆ์›Œ์š”

Windows ํ…Œ์ŠคํŠธ: ์ด์ „์— ์ž์› ํ•œ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์•ˆ๋…•ํ•˜์„ธ์š”! ์ง€๊ธˆ๋ถ€ํ„ฐ 5์›” 6์ผ๊นŒ์ง€ ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ Pipenv๋ฅผ ํ…Œ์ŠคํŠธํ•˜๊ณ  ๋ฒ„๊ทธ๋ฅผ ์‹ ๊ณ ํ•˜์„ธ์š” .

@๋ช…๋ น ํƒญ
@๋ฌธ๊ณ ์ž 
@snakeice
@nicholasAlert
@madsmtm
@๋งˆ์šฐ์Šค
@gmsantos
@davekeanexero
@lucidyan
@๋ธŒ๋ผํƒ€์˜ค
@sudopriestmx
@amhrasmussen

Windows ํ…Œ์ŠคํŠธ: ์ด์ „์— ์ž์› ํ•œ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์•ˆ๋…•ํ•˜์„ธ์š”! ์ง€๊ธˆ๋ถ€ํ„ฐ 5์›” 6์ผ๊นŒ์ง€ ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ Pipenv๋ฅผ ํ…Œ์ŠคํŠธํ•˜๊ณ  ๋ฒ„๊ทธ๋ฅผ ์‹ ๊ณ ํ•˜์„ธ์š” .

์ด ๋งํฌ์—์„œ ๋ช…๋ น์„ ์‹คํ–‰ํ–ˆ๋Š”๋ฐ pipenv update --dry-run ์˜ˆ์™ธ #4229๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ์™€ Linux/Ubuntu์—์„œ๋„ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. pipenv ์—…๋ฐ์ดํŠธ๊ฐ€ ์˜ˆ์ƒ๋Œ€๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

@techalchemy ๋กœ ํ™•์ธํ•˜์ง€๋Š” ์•Š์•˜์ง€๋งŒ ์ด ๋ฒ ํƒ€๊ฐ€ ์–ด๋–ป๊ฒŒ ์ง„ํ–‰๋˜๊ณ  ์žˆ๋Š”์ง€ ์•Œ์•„๋ณด๊ธฐ ์œ„ํ•ด ์ด ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์™€ 4๊ฐœ์˜ Sarugaku ๋ฆฌํฌ์ง€ํ† ๋ฆฌ(์˜ˆ: requirementslib)๋ฅผ ๋น ๋ฅด๊ฒŒ ์‚ดํŽด๋ณด์•˜์Šต๋‹ˆ๋‹ค.

๋ณ€๊ฒฝ ์‚ฌํ•ญ:

4232๊ฐ€ ๋‚˜์™”๊ณ  #4236์œผ๋กœ ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

4217์ด ๋‚˜ํƒ€๋‚ฌ๊ณ  #4241(#3396๋„ ์ฃผ์†Œ ์ง€์ •)์— ์˜ํ•ด ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

4219 ๋ฐ #4230์ด ์ด์ œ ๋ณ‘ํ•ฉ๋ฉ๋‹ˆ๋‹ค.

์•„์ง ์—ด๋ ค ์žˆ์Šต๋‹ˆ๋‹ค:

4231์€ ์—ฌ์ „ํžˆ โ€‹โ€‹์—ด๋ ค ์žˆ๊ณ  Dan์€ Mac OS X ๋ฐ/๋˜๋Š” Linux์—์„œ ์ด๋ฅผ ์žฌ์ƒ์‚ฐํ•˜๋Š” ๋ฐ ๋„์›€์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. -- " setup_requires cython $ ๊ฐ™์€ setup.py์˜ ๊ฒฝ์šฐ pipenv๋Š” ์ด๋ฅผ ์กด์ค‘ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. Pipfile ์ž ๊ธˆ".

@brainwane ์ฐธ๊ณ : sarugaku/requirementslib#229๋Š” ์ด ๋ฒ ํƒ€์˜ ์ผ๋ถ€์ธ sarugaku/requirementslib#228์— ์„ค๋ช…๋œ ํšŒ๊ท€ ์ˆ˜์ •์ž…๋‹ˆ๋‹ค.

@brainwane #4218๋„ ์ฐจ๋‹จ๊ธฐ๊ฐ€ ๋  ๊ฒƒ ๊ฐ™์€๋ฐ์š”? ์ด๋Š” ํšŒ๊ท€์ด๋ฉฐ ํŠน์ • ์ข…์†์„ฑ์ด ์žˆ๋Š” ๊ธฐ์กด ๋ฐ ์ƒˆ ํ”„๋กœ์ ํŠธ๋ฅผ ์™„์ „ํžˆ ์ค‘๋‹จํ•ฉ๋‹ˆ๋‹ค.

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

๋ฆด๋ฆฌ์Šค ์ฐจ๋‹จ ๋ฌธ์ œ์— ๋Œ€ํ•œ ๋” ์ฒ ์ €ํ•œ ์‚ฌํ›„ ๋ถ„์„์„ ์—ฌ๊ธฐ ์— ๊ฒŒ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ๋นŒ๋“œ๊ฐ€ ์™„๋ฃŒ๋˜๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์ง€๋งŒ ํ† ์š”์ผ ์˜ค์ „ 1์‹œ์ด๋ฏ€๋กœ ์•„๋ฌด๋„ ์—†๋Š” ๋™์•ˆ ์•„๋ฌด ๊ฒƒ๋„ ๊นจ์ง€ ์•Š๋Š” ๊ฒƒ์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ์›”์š”์ผ๊นŒ์ง€ ๋ฆด๋ฆฌ์Šค๋ฅผ ์ž์ œํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฐ˜์‘ํ•˜๋‹ค / ๋ฐ˜์‘ํ•˜๋‹ค

์ด๋Ÿฌํ•œ ๋ฌธ์ œ ์ค‘ ์ผ๋ถ€๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” ๊ท€์ค‘ํ•œ ๋””๋ฒ„๊น… ์ •๋ณด๋ฅผ ์ œ๊ณตํ•œ ๋ชจ๋“  ์‚ฌ๋žŒ์—๊ฒŒ ๋‹ค์‹œ ํ•œ ๋ฒˆ ๊ฐ์‚ฌ๋ฅผ ๋“œ๋ฆฌ๋ฉฐ ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ›จ์”ฌ ์›ํ™œํ•ด์กŒ์Šต๋‹ˆ๋‹ค.

@techalchemy ?

@Immortalin Dan์ด ์›”์š”์ผ์— ์ž ์žฌ์ ์œผ๋กœ ๋ฌด์–ธ๊ฐ€๋ฅผ ๊ธฐ๋Œ€ํ•œ๋‹ค๊ณ  ํ•ด๋„ ๊ท€ํ•˜์˜ ์˜๊ฒฌ์€ ๊ฑด์„ค์ ์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ž์‹ ์„ ํ™•์ธํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

๋Œ„, ์šฐ๋ฆฌ ๋ชจ๋‘๋Š” ๋‹น์‹ ์˜ ๋…ธ๊ณ ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๋‚˜๋Š” ์šฐ๋ฆฌ ๋Œ€๋ถ€๋ถ„์ด ๋‹น์‹ ์—๊ฒŒ ๋„์›€์ด ๋  ๋” ๋งŽ์€ ๋ฐฉ๋ฒ•์„ ์ฐพ์•„์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

4251์€ ์‡ผ์Šคํ† ํผ๊ฐ€ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค( pipenv install --outdated ์‹คํŒจ).

๋‹ค๋ฅธ ๋ฒ ํƒ€ ๋ฒ„์ „์„ ์ถœ์‹œํ•  ๊ณ„ํš์ด ์žˆ์Šต๋‹ˆ๊นŒ? ๋ฒ„์ „ 2020.4.1b1์„ ์‚ฌ์šฉ ์ค‘์ด๊ณ  psycopg2๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ์ž ๊ทธ๋Š” ๋™์•ˆ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. #4231๊ณผ ๊ฐ™์€ ์ˆ˜์ • ์‚ฌํ•ญ์ด ์žˆ์œผ๋ฏ€๋กœ ์ด๋ฏธ ์ˆ˜์ •๋œ ์‚ฌํ•ญ์„ ๋ณด๊ณ ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋ชจ๋“  ๋ฒ„๊ทธ ์ˆ˜์ •์ด ํฌํ•จ๋œ ์ตœ์‹  ๋ฒ„์ „์˜ pipenv๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ™•์ธํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ์€ ๋ฆด๋ฆฌ์Šค ์—…๋ฐ์ดํŠธ์ž…๋‹ˆ๋‹ค. Tl; dr: ๊ณต๊ธ‰์—…์ฒด๋ฅผ pipenvํ•˜๋Š” ์ข…์† ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๋ฐ ์˜ˆ๊ธฐ์น˜ ์•Š์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ์ง€์—ฐ์ด ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฉฐ์น  ๋‚ด๋กœ ์ƒˆ๋กœ์šด ํ”„๋ฆฌ๋ฆด๋ฆฌ์ฆˆ๊ฐ€ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์„ธ๋ถ€:
์ง€๋‚œ ์ฃผ ๋ง, ๋‚˜๋Š” #4195๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด vissir์—์„œ ๊ฐ„๋‹จํ•œ ์ˆ˜์ • ์‚ฌํ•ญ์„ ๋ณ‘ํ•ฉํ•˜๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ถœ์‹œ๋ฅผ ์ค€๋น„ํ•˜๋ฉด์„œ ๋น ๋ฅด๊ฒŒ ๋ณต์ˆ˜ํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ์˜ ์ผ๋ถ€๋กœ ์ด ๋ณ€๊ฒฝ์„ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. vistir๋Š” Pipenv์— ๋Œ€ํ•œ ์ผ๋ถ€ ํ”Œ๋žซํผ ๊ฐ„/Python 2/3 ํ˜ธํ™˜์„ฑ ์ง€์›์„ ์ œ๊ณตํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ CI๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์ด์ƒํ•œ ์ด์œ ๋กœ ์ „๋ฐ˜์ ์œผ๋กœ ์‹คํŒจํ–ˆ์œผ๋ฉฐ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ํŒŒ์•…ํ•˜๊ณ  ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ์•ฝ๊ฐ„์˜ ์‹œ๊ฐ„์ด ์†Œ์š”๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์–ด์จŒ๋“  ์ˆ˜์ • ์‚ฌํ•ญ์„ ๋˜๋Œ๋ฆฌ๊ณ  ๋ฆด๋ฆฌ์Šคํ•  ์ˆ˜๋Š” ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ์ˆ˜์ • ์‚ฌํ•ญ์ด ์—†์œผ๋ฉด Pipenv์—์„œ ํ”Œ๋žซํผ ๊ฐ„ ๋ฐ ํ˜ธํ™˜์„ฑ์ด ๊นจ์งˆ ์œ„ํ—˜์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๊ณ„ํš:

  • ~๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ถœ์‹œ(https://github.com/sarugaku/vistir / https://github.com/sarugaku/requirementslib)~
  • ~Pipenv์—์„œ ์—…๋ฐ์ดํŠธ๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์žฌ๊ณต๊ธ‰์—…์ฒด~
  • ~Pipenv์—์„œ ๋‚˜๋จธ์ง€ ์ €์œ„ํ—˜, ๋ณ‘ํ•ฉ ์ค€๋น„ PR ๋ณ‘ํ•ฉ~
  • ~๋ฆด๋ฆฌ์Šค ์ฐจ๋‹จ์— ๋Œ€ํ•œ Pipenv ๋ฌธ์ œ ๊ฒ€ํ† ~
  • ~Pre?Release: ์•„๋งˆ๋„ ์ •์‹ ๋ฆด๋ฆฌ์Šค ์ „์— Pipenv์˜ ์ƒˆ๋กœ์šด ํ”„๋ฆฌ๋ฆด๋ฆฌ์ฆˆ๋ฅผ ๋งŒ๋“œ์‹ญ์‹œ์˜ค~

์ถ”๊ฐ€ ์ฐธ๊ณ  ์‚ฌํ•ญ

  • ์‹คํŒจ๋Š” ๋ณ€๊ฒฝ๊ณผ ๊ด€๋ จ์ด ์—†์—ˆ์ง€๋งŒ Azure(CI ํ™˜๊ฒฝ)๊ฐ€ Python ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ์‹์˜ ๋ณ€๊ฒฝ๊ณผ ๊ด€๋ จ์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํ•œ ๊ฒฝ์šฐ์—๋Š” ์ถœ๋ ฅ์ด Windows์—์„œ ์ธ์ฝ”๋”ฉ ๋ฐ ๋””์ฝ”๋”ฉ๋˜๋Š” ๋ฐฉ์‹์— ์‹ฌ๊ฐํ•œ ์ž ์žฌ์  ๋ฒ„๊ทธ๊ฐ€ ๋…ธ์ถœ๋˜์—ˆ์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋‹ค๋ฅธ ๊ฒฝ์šฐ๋Š” ์ตœ์‹  ๋ฒ„์ „์˜ MacOS์— ๋Œ€ํ•œ ๊ฒฝ๋กœ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฒƒ๊ณผ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๊ธฐ๋Šฅ์€ ์†์„ฑ ๊ธฐ๋ฐ˜ ํ…Œ์ŠคํŠธ๋ฅผ ํ†ตํ•ด ์ฒ ์ €ํ•˜๊ฒŒ ํ…Œ์ŠคํŠธ๋˜๋ฏ€๋กœ ์‹คํŒจ๊ฐ€ ์‹ค์ œ ๋ฌธ์ œ์ด๊ณ  ํ…Œ์ŠคํŠธ๊ฐ€ ์ง„ํ–‰ ์ค‘์ธ ๋ฌธ์ œ๋ฅผ ํฌ์ฐฉํ•  ๊ฒƒ์ด๋ผ๊ณ  ํ™•์‹ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋‚ด๊ฐ€ ๋ฌผ๊ฑด์„ ์ถ”์ ํ•˜๋Š” ๋ฐ ๋„์›€์„ ์ค€ ๋‹ค๋ฅธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ Pipenv ์œ ์ง€ ๊ด€๋ฆฌ์ž, ํ…Œ์Šคํ„ฐ ๋ฐ ๊ธฐํƒ€ ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

๋จผ์ € ์ด ๋ฆด๋ฆฌ์Šค์— ํˆฌ์ž…ํ•˜๊ณ  ์ด ํ”„๋กœ์ ํŠธ๋ฅผ ๊ณ„์† ์ง„ํ–‰ํ•ด ์ฃผ์‹  ๋ฐ ๋Œ€ํ•ด ๋Œ€๋‹จํžˆ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. Pipenv๋Š” ์ €๋ฅผ ์—ฌ๋Ÿฌ ๋ฒˆ ๊ตฌํ•ด์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  ๋ง๊ณผ ์ฃผ์ œ์—์„œ ์•ฝ๊ฐ„ ๋ฒ—์–ด๋‚  ์œ„ํ—˜์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฆด๋ฆฌ์Šค ํ”„๋กœ์„ธ์Šค์˜ ์ตœ์‹  ๋ฌธ์ œ๋ฅผ ๊ฐ์•ˆํ•  ๋•Œ

์ง€๋‚œ ์ฃผ ๋ง, ๋‚˜๋Š” #4195๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด vissir์—์„œ ๊ฐ„๋‹จํ•œ ์ˆ˜์ • ์‚ฌํ•ญ์„ ๋ณ‘ํ•ฉํ•˜๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ถœ์‹œ๋ฅผ ์ค€๋น„ํ•˜๋ฉด์„œ ๋น ๋ฅด๊ฒŒ ๋ณต์ˆ˜ํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ์˜ ์ผ๋ถ€๋กœ ์ด ๋ณ€๊ฒฝ์„ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. vistir๋Š” Pipenv์— ๋Œ€ํ•œ ์ผ๋ถ€ ํ”Œ๋žซํผ ๊ฐ„/Python 2/3 ํ˜ธํ™˜์„ฑ ์ง€์›์„ ์ œ๊ณตํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ CI๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์ด์ƒํ•œ ์ด์œ ๋กœ ์ „๋ฐ˜์ ์œผ๋กœ ์‹คํŒจํ–ˆ์œผ๋ฉฐ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ํŒŒ์•…ํ•˜๊ณ  ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ์•ฝ๊ฐ„์˜ ์‹œ๊ฐ„์ด ์†Œ์š”๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์–ด์จŒ๋“  ์ˆ˜์ • ์‚ฌํ•ญ์„ ๋˜๋Œ๋ฆฌ๊ณ  ๋ฆด๋ฆฌ์Šคํ•  ์ˆ˜๋Š” ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ์ˆ˜์ • ์‚ฌํ•ญ์ด ์—†์œผ๋ฉด Pipenv์—์„œ ํ”Œ๋žซํผ ๊ฐ„ ๋ฐ ํ˜ธํ™˜์„ฑ์ด ๊นจ์งˆ ์œ„ํ—˜์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

python 2 ์ง€์›์„ ์ค‘๋‹จํ•˜๊ณ (EOL) ํ•ด๋‹น ์š”๊ตฌ ์‚ฌํ•ญ(์˜ˆ: vistir ๋ฐ ๊ธฐํƒ€)์„ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ–ˆ์Šต๋‹ˆ๊นŒ?

์žฅ๊ธฐ์ ์ธ python2 ์ง€์›์ด ์ค‘๋‹จ๋  ๊ฒƒ์ด๋ผ๊ณ  ๊ฐ€์ •ํ•˜์ง€๋งŒ ์ง€๊ธˆ ์ค‘๋‹จํ•˜๋ฉด ๋ฆด๋ฆฌ์Šค ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋‹จ์ˆœํ™”๋˜๊ณ  ํ”„๋กœ์ ํŠธ์˜ ๋ณต์žก์„ฑ์ด ์ค„์–ด๋“ค๋ฉฐ ์ด ๋ฆด๋ฆฌ์Šค๋ฅผ ๋” ์‰ฝ๊ฒŒ ์ž˜๋ผ๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ๋‚˜์ค‘์—๋ณด๋‹ค๋Š” ์ง€๊ธˆ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜์ง€ ์•Š์„๊นŒ์š”?

ps ๋…ธ๊ณ ์— ๋‹ค์‹œํ•œ๋ฒˆ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค

ํŽธ์ง‘: flimm์ด ์ œ์•ˆํ•œ ๋Œ€๋กœ 2020๋…„ ์ฒซ ๋ฒˆ์งธ ๋ฆด๋ฆฌ์Šค์—์„œ ๋Œ€ํ™”๋ฅผ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด python 2๋ฅผ ์‚ญ์ œํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•œ ํ† ๋ก ์„ ์œ„ํ•ด ๋‹ค๋ฅธ ๋ฌธ์ œ #4261์„ ์—ด์—ˆ์Šต๋‹ˆ๋‹ค.

์‹œ๋„๋Ÿฝ๊ฒŒ ๋Š๊ปด์งˆ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋ณ„๋„์˜ GitHub ๋ฌธ์ œ์—์„œ Python 2์— ๋Œ€ํ•œ ์ง€์› ์ค‘๋‹จ์— ๋Œ€ํ•ด ๊ณ„์† ์ด์•ผ๊ธฐํ•ฉ์‹œ๋‹ค.

@r-richmond vistir๋Š” ๋…ผ๋ฆฌ์˜ Python 3 ๋ถ„๊ธฐ์—์„œ๋„ ์‚ฌ์šฉ๋˜๋ฏ€๋กœ Python 2์— ๋Œ€ํ•œ ์ง€์›์„ ์ œ๊ฑฐํ•œ๋‹ค๊ณ  ํ•ด์„œ ์ด๋ฒˆ ๋ฆด๋ฆฌ์Šค๊ฐ€ _๋” ์‰ฌ์›Œ์ง€์ง€๋Š” ์•Š์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ์ €๋Š” pipenv์˜ ๋˜ ๋‹ค๋ฅธ ์‹œํ—˜ํŒ ( 2020.4.1b2 -- ๋ฆด๋ฆฌ์Šค์—๋Š” ์ถœ์‹œ์ผ์— ํƒœ๊ทธ๊ฐ€ ์ง€์ •๋˜๋ฏ€๋กœ ์ด๋ฆ„ ์ง€์ •์— ๋Œ€ํ•ด ํฌ๊ฒŒ ๊ฑฑ์ •ํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค)์„ ์ž˜๋ผ๋ƒˆ์Šต๋‹ˆ๋‹ค.

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

ํ…Œ์ŠคํŠธ๋ฅผ ๋•๊ณ  ํ”ผ๋“œ๋ฐฑ์„ ์ œ๊ณตํ•˜๊ณ  ์ˆ˜์ • ์‚ฌํ•ญ์„ ๋ณ‘ํ•ฉํ•˜๋Š” ๋ฐ ๋„์›€์„ ์ฃผ์‹  ๋ชจ๋“  ๋ถ„๋“ค๊ป˜ ๋‹ค์‹œ ํ•œ ๋ฒˆ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค!

๋ฐฉ๊ธˆ @techalchemy ์™€ ์ด์•ผ๊ธฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Š” #4263๊ณผ #3592๊ฐ€ ์ฐจ๋‹จ๋˜์ง€ ์•Š์•˜๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Š” ๋˜ํ•œ ๋งํ–ˆ๋‹ค

๋‚˜๋Š” ๊ณต๊ธ‰ ์—…์ฒด ๊ฐ€์ ธ ์˜ค๊ธฐ ๊ฒฝ๋กœ์— ๋Œ€ํ•œ ํ•œ ๊ฐ€์ง€ ๋ฌธ์ œ๋งŒ ๋ณด์•˜์Šต๋‹ˆ๋‹ค ...
๋ณต๊ตฌ๊ฐ€ ์™„๋ฃŒ๋˜์—ˆ๊ณ  ๊ฐ€์ ธ์˜ค๊ธฐ ๊ฒฝ๋กœ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์•˜์œผ๋ฏ€๋กœ ์ง€๊ธˆ์€ ๋ฌธ์ œ์— ๋Œ€ํ•œ PR์„ ์ˆ˜๋ฝํ•˜๊ณ  ์ด์— ๋Œ€ํ•œ ํŒจ์น˜๋ฅผ ์ƒ์„ฑํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์ด #4267์ด๋ผ๊ณ  ๊ฐ€์ •ํ•˜์ง€๋งŒ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ผ๋‹จ ์ฒ˜๋ฆฌ๋˜๋ฉด ์˜ค๋Š˜ ์„๋ฐฉ์„ ๋ชฉํ‘œ๋กœ ํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

^ ์ถœ์‹œ๊ฐ€ ๋๋‚ฌ์Šต๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ์— ๋„์›€์„ ์ฃผ์‹  ๋ชจ๋“  ๋ถ„๋“ค๊ป˜ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค!

์™€! ์ •๋ง ๋Œ€๋‹จํ•ด! pipenv๋ฅผ ๋‹ค์‹œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

2020๋…„ 5์›” 28์ผ ๋ชฉ์š”์ผ 15:17 Dan Ryan, [email protected] ์ด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

^ ์ถœ์‹œ๊ฐ€ ๋๋‚ฌ์Šต๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ์— ๋„์›€์„ ์ฃผ์‹  ๋ชจ๋“  ๋ถ„๋“ค๊ป˜ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค!

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

^ ์ถœ์‹œ๊ฐ€ ๋๋‚ฌ์Šต๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ์— ๋„์›€์„ ์ฃผ์‹  ๋ชจ๋“  ๋ถ„๋“ค๊ป˜ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค!

๋Œ€๋‹จํžˆ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! :+1: :partying_face:

https://pypi.org/project/pipenv/#history ์— ๋”ฐ๋ผ Pipenv 2020.5.28์ด ์ถœ์‹œ๋˜์—ˆ์œผ๋ฏ€๋กœ ์ด ๋ฌธ์ œ์™€ ๋ฆด๋ฆฌ์Šค ๋งˆ์ผ์Šคํ†ค ์„ ๋‹ซ์Šต๋‹ˆ๋‹ค.

@techalchemy ์—๊ฒŒ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ•˜๋ฃจ ์ค‘ ์ผ๋ถ€ ์‹œ๊ฐ„์— ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค€ Canonical์—๋„ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

์ œ ์ƒ๊ฐ์—: ์—…๋ฌด์— Python์„ ์‚ฌ์šฉํ•˜๊ณ  ์ด ๋„๊ตฌ์™€ ๋‹ค๋ฅธ Python ํŒจํ‚ค์ง•/๋ฐฐํฌ/์„ค์น˜ ๋„๊ตฌ๋ฅผ ๋” ์ข‹๊ณ  ๋” ์ž์ฃผ ๋ฆด๋ฆฌ์Šค ํ•˜๋ ค๋ฉด ๊ณ ์šฉ์ฃผ์—๊ฒŒ ํ›„์›์„ ์š”์ฒญํ•˜์‹ญ์‹œ์˜ค . ๋” ํฐ ์˜ˆ์‚ฐ์ด ์žˆ๋Š” ๊ฒฝ์šฐ Packaging Working Group ์€ ์ด๋Ÿฌํ•œ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง€์†์ ์œผ๋กœ ์ž‘์—…ํ•˜๊ณ  ์ž˜ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๊ณ„์•ฝ์ž์—๊ฒŒ ๋น„์šฉ์„ ์ง€๋ถˆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ž์› ๋ด‰์‚ฌ๋ฅผ ํ†ตํ•ด ๋„์›€์„ ์ฃผ๊ณ  ์‹ถ๋‹ค๋ฉด ์ด ๋ฐœํ‘œ ๋ฅผ ์ฝ๊ณ  Pipenv์˜ ๋กœ๋“œ๋งต ๋ฐ ๊ธฐ์—ฌ์ž-์œ ์ง€ ๊ด€๋ฆฌ์ž ํ”„๋กœ์„ธ์Šค ๊ฐœ์„ ์— ๋Œ€ํ•œ ๋ฌธ์ œ #4130์„ ๋”ฐ๋ฅด์‹ญ์‹œ์˜ค.

์ด ๋ฆด๋ฆฌ์Šค์— ๊ธฐ์—ฌํ•œ ๋ชจ๋“  ์‚ฌ๋žŒ(์‚ฌ์šฉ์ž, ํ…Œ์Šคํ„ฐ, ์‹ ํ˜ธ ๋ถ€์Šคํ„ฐ, ๋ฆฌ๋ทฐ์–ด, ํŒจ์น˜ ์ž‘์„ฑ์ž, ์—ฌ๊ธฐ ๋Œ“๊ธ€์ด๋‚˜ ๋ฉ”์ผ๋ง ๋ฆฌ์ŠคํŠธ ๋ฐ ์†Œ์…œ ๋ฏธ๋””์–ด์—์„œ ์ข‹์€ ๋ง์„ ํ•œ ์‚ฌ๋žŒ๋“ค)์—๊ฒŒ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

(์ €๋Š” ๋ณ‘๋ชฉ ํ˜„์ƒ์„ ํ•ด์†Œํ•˜๊ณ  ์ด ๋ฆด๋ฆฌ์Šค๋ฅผ ์ถœ์‹œํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๊ฒƒ๊ณผ ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•ด ์ด๋ฅผ ๋ณต์ œํ•˜๊ธฐ ์œ„ํ•ด ํ•  ์ˆ˜ ์žˆ๋Š” ์ž‘์—…์— ๋Œ€ํ•ด ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ ์„ ์ž‘์„ฑ ํ–ˆ์Šต๋‹ˆ๋‹ค .

Sumana, ๊ทธ ์ด์•ผ๊ธฐ๋ฅผ ๊ณต์œ ํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‹น์‹ ์˜
pipenv ๋ถ€ํฅ์— ์‹œ๊ฐ„๊ณผ ์—๋„ˆ์ง€. ๋ง์”€ํ•˜์‹ ๋Œ€๋กœ ์ž ๊ธˆ ํ•ด์ œ๋œ ๊ฐ’์€
์—„์ฒญ๋‚˜๋‹ค.

2020๋…„ 9์›” 11์ผ ๊ธˆ์š”์ผ 21:05 Sumana Harihareswara [email protected]
์ผ๋‹ค:

(๋ธ”๋กœ๊ทธ ํฌ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค https://www.harihareswara.net/sumana/2020/09/08/0
๋ณ‘๋ชฉ ํ˜„์ƒ์„ ํ•ด๊ฒฐํ•˜๊ณ  ์ด ๋ฆด๋ฆฌ์Šค๋ฅผ ์ถœ์‹œํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์ž‘์—…์— ๋Œ€ํ•ด
์ด๊ฒƒ์„ ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ์— ๋ณต์ œํ•˜๊ธฐ ์œ„ํ•ด ํ•  ์ˆ˜ ์žˆ๋Š” ์ผ์— ๋Œ€ํ•ด --
๋ณธ์ธ ๋˜๋Š” ์ œ ํšŒ์‚ฌ์ธ Changeset Consulting https://changeset.nyc/ ๋ฅผ ํ†ตํ•ด
.)

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

--
์ž๋ฅด

์•ˆ๋…•ํ•˜์„ธ์š” ์—ฌ๋Ÿฌ๋ถ„,

์ด๊ฒƒ์€ #3488์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋Š” WSL ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๊นŒ?

์–ธ๊ธ‰ํ•˜์‹  ๋ฌธ์ œ๋Š” pipenv์—์„œ ํ•ด๊ฒฐํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ์— ์„ค๋ช…๋œ ๋Œ€๋กœ ํ™˜๊ฒฝ์„ ์ง์ ‘ ๊ตฌ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

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