Pip: ํŠธ๋ฆฌ ์™ธ๋ถ€ ๋นŒ๋“œ์™€ ๊ด€๋ จ๋œ ๋ฌธ์ œ ํ•ด๊ฒฐ

์— ๋งŒ๋“  2020๋…„ 01์›” 04์ผ  ยท  68์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: pypa/pip

๋‚˜๋Š” ์ด ๋ฌธ์ œ๋ฅผ ํŠธ๋ฆฌ ์™ธ๋ถ€ ๋นŒ๋“œ, ๊ด€๋ จ ๋ฌธ์ œ ๋ฐ ๊ฐ€๋Šฅํ•œ ์†”๋ฃจ์…˜์— ๋Œ€ํ•œ ํ† ๋ก ์„ ํ†ตํ•ฉํ•˜๋ ค๋Š” ์‹œ๋„๋กœ ์—ฝ๋‹ˆ๋‹ค.

์ด ๊ธฐ๋Šฅ์œผ๋กœ ํ•ด๊ฒฐ๋˜๋Š” ๋ฌธ์ œ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๋กœ์ปฌ ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ๋นŒ๋“œํ•  ๋•Œ pip๋Š” ๋จผ์ € ํ”„๋กœ์ ํŠธ๋ฅผ ์ž„์‹œ ์œ„์น˜์— ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค .

์ด ์ ‘๊ทผ ๋ฐฉ์‹์€ ์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผ ์—ฌ๋Ÿฌ ๋ฌธ์ œ๋ฅผ ์ œ๊ธฐํ–ˆ์Šต๋‹ˆ๋‹ค.

  • setup.py / pyproject.toml์ด ํ”„๋กœ์ ํŠธ์˜ ๋ฃจํŠธ์— ์žˆ์ง€ ์•Š๊ณ  ๋นŒ๋“œ๊ฐ€ setup.py / pyproject.toml ํ•˜์œ„ ํŠธ๋ฆฌ(#3500, #7549, #6276) ์™ธ๋ถ€์˜ ๋ฆฌ์†Œ์Šค์— ์ข…์†๋˜๋Š” ๊ฒฝ์šฐ, ์˜ˆ:

    • ๋นŒ๋“œ์—๋Š” ํ•˜์œ„ ํŠธ๋ฆฌ ์™ธ๋ถ€์˜ ํŒŒ์ผ/๋””๋ ‰ํ† ๋ฆฌ์— ๋Œ€ํ•œ ์‹ฌ๋ณผ๋ฆญ ๋งํฌ์ธ ๋ฆฌ์†Œ์Šค๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

    • ๋นŒ๋“œ์—๋Š” git ์ €์žฅ์†Œ๊ฐ€ ํ•„์š”ํ•˜๊ณ (์˜ˆ: setuptools_scm๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ) .git/์€ pip์— ์˜ํ•ด ์ž„์‹œ ๋””๋ ‰ํ† ๋ฆฌ์— ๋ณต์‚ฌ๋˜์ง€ ์•Š์€ ์ƒ์œ„ โ€‹โ€‹๋””๋ ‰ํ† ๋ฆฌ์— ์žˆ์Šต๋‹ˆ๋‹ค.

    • ๋นŒ๋“œ๋Š” ํ•˜์œ„ ๋””๋ ‰ํ† ๋ฆฌ ์ด๋ฆ„์— ์˜์กดํ•ฉ๋‹ˆ๋‹ค(๋‹ค์†Œ ์ด๊ตญ์ ์ผ ์ˆ˜ ์žˆ์ง€๋งŒ ์‚ฌ์šฉ์ž ์ •์˜ ๋นŒ๋“œ ๋ฐฑ์—”๋“œ๋ฅผ ๋งŒ๋“ค๊ณ  ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์˜ ์ผ๋ถ€๊ฐ€ ํ•˜์œ„ ๋””๋ ‰ํ† ๋ฆฌ ์ด๋ฆ„์— ์˜์กดํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค)

  • ํ”„๋กœ์ ํŠธ ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ํด ๋•Œ์˜ ์„ฑ๋Šฅ ๋ฌธ์ œ(#2195).

๋นŒ๋“œํ•˜๊ธฐ ์ „์— pip๊ฐ€ ์ž„์‹œ ๋””๋ ‰ํ† ๋ฆฌ์— ๋ณต์‚ฌํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์ฃผ์˜ ์‚ฌํ•ญ: ์ด๊ฒƒ์€ ๋‚˜์—๊ฒŒ ๋ถˆ๋ถ„๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์ง€๊ธˆ๊นŒ์ง€ ์ˆ˜์ง‘ํ•œ ๋‚ด์šฉ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ์†Œ์Šค๊ฐ€ ์•„๋‹Œ ๊ฒƒ์— ์˜์กดํ•˜๋Š” ๊ฒƒ์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด (https://github.com/pypa/pip/issues/2195#issuecomment-524606986) - ๋น„๋ก "out of source"์˜ ์ •์˜๊ฐ€ ์œ„์˜ ๋ช‡ ๊ฐ€์ง€ ๋ฌธ์ œ์˜ ์›์ธ์ด์ง€๋งŒ
  • ๋นŒ๋“œ ์•„ํ‹ฐํŒฉํŠธ ๋˜๋Š” ์ž”๋ฅ˜๋ฌผ(?)๋กœ ์†Œ์Šค ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์˜ค์—ผ์‹œํ‚ค๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๋ ค๋ฉด
  • ๋‹ค๋ฅธ ๊ฒƒ?

๊ฐ€๋Šฅํ•œ ํ•ด๊ฒฐ์ฑ…

  1. ์ œ์ž๋ฆฌ์— sdist๋ฅผ ๋งŒ๋“ค๊ณ  ์ž„์‹œ ์œ„์น˜์— sdist์˜ ์••์ถ•์„ ํ‘ผ ๋‹ค์Œ ๊ทธ ์œ„์น˜์—์„œ ๋นŒ๋“œํ•ฉ๋‹ˆ๋‹ค.
  2. ์ œ์ž๋ฆฌ์— ๋นŒ๋“œํ•˜๋ ค๋ฉด pip ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•˜์‹ญ์‹œ์˜ค.
  3. ๋‚ด๋ถ€ ๋นŒ๋“œ์— ๋Œ€ํ•ด "์•ˆ์ „ํ•œ" ๊ฒฝ์šฐ ๋ฐฑ์—”๋“œ๊ฐ€ ํ”„๋ŸฐํŠธ์—”๋“œ์™€ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ์ผ์ข…์˜ ๋ฉ”์ปค๋‹ˆ์ฆ˜์œผ๋กœ PEP 517์„ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.
  4. ํ•ญ์ƒ ์ œ์ž๋ฆฌ์— ๋นŒ๋“œํ•˜๋„๋ก pip๋ฅผ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.
  5. ํŠธ๋ฆฌ ์™ธ๋ถ€์—์„œ ๋นŒ๋“œํ•˜๋Š” ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ œ์ž๋ฆฌ์— ๋นŒ๋“œํ•˜๋„๋ก pip๋ฅผ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

์ถ”๊ฐ€ ์ปจํ…์ŠคํŠธ

sdist๋ฅผ ํ†ตํ•œ ๋นŒ๋“œ ์— ๋Œ€ํ•œ ๋” ๋งŽ์€ ํ† ๋ก ์€ ํ† ๋ก 

needs discussion

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

https://github.com/pypa/pip/issues/2195#issuecomment -664728481 ์ €๋Š” --use-feature=in-tree-build ๋’ค์— #7882๋ฅผ ๋‹ค์‹œ ํ•˜๊ฒŒ ๋˜์–ด ๊ธฐ์ฉ๋‹ˆ๋‹ค.

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

์ด๊ฒƒ์„ ๋ฐฑ์—”๋“œ์˜ ๊ด€์ ์—์„œ ๋ณด๋ฉด "out of tree build"๋ผ๋Š” ๊ฐœ๋…์€ ์‹ค์ œ๋กœ ์˜๋ฏธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋ฐฑ์—”๋“œ์—๋Š” ํ”„๋กœ์„ธ์Šค์˜ ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ ํ˜•ํƒœ๋กœ "์†Œ์Šค ํŠธ๋ฆฌ"๊ฐ€ ์ œ๊ณต๋˜๊ณ  ๋นŒ๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋ผ๋Š” ์š”์ฒญ์„ ๋ฐ›์Šต๋‹ˆ๋‹ค. ํ•ด๋‹น ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ sdist์—์„œ ์ถ”์ถœ๋˜์—ˆ๋Š”์ง€, VCS์—์„œ ์ฒดํฌ์•„์›ƒ๋˜์—ˆ๋Š”์ง€, ๋˜๋Š” ๋‹ค๋ฅธ ๊ณณ์—์„œ ๋ณต์‚ฌ๋˜์—ˆ๋Š”์ง€ ์•Œ ๋ฐฉ๋ฒ•์ด ์—†์Šต๋‹ˆ๋‹ค. ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ๋นŒ๋“œ๋ฟ์ด๋ฉฐ ๋นŒ๋“œ์— ํ•„์š”ํ•œ ๊ฒƒ์ด ์—†์œผ๋ฉด ์‹คํŒจ๋ฅผ ๋ณด๊ณ ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ๊ฐ€๋Šฅํ•œ ์†”๋ฃจ์…˜์„ ๊ฑฐ์˜ ์ฃฝ์ž…๋‹ˆ๋‹ค. (3) IMO - ๋ฐฑ์—”๋“œ์—๋Š” ๋‚ด๋ถ€ ๋นŒ๋“œ ๊ฐ€ ๋ฌด์—‡์ธ์ง€์— ๋Œ€ํ•œ ๊ฐœ๋…์ด ์—†์œผ๋ฏ€๋กœ ๊ทธ๋Ÿฌํ•œ ๋นŒ๋“œ๊ฐ€ ์•ˆ์ „ํ•œ์ง€ ์—ฌ๋ถ€๋ฅผ ๋งํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค 1 .

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

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

๋‚ด ์„ ํ˜ธ๋„๋Š” sdist๋ฅผ ๊ตฌ์ถ•ํ•œ ๋‹ค์Œ ์ง€๊ธˆ๋ถ€ํ„ฐ ์˜ค๋žซ๋™์•ˆ(์„ ํƒ ์‚ฌํ•ญ 1) ํœ ์„ ๊ตฌ์ถ•ํ•˜๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” pip ๊ตฌ์ถ•์— ๋™์˜ํ•˜์ง€๋งŒ (์œ„์—์„œ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด ๋ฐฑ์—”๋“œ์—์„œ ์•Œ๋ ค์ฃผ๋Š” ๊ฒƒ์„ ๊ธฐ๋Œ€ํ•  ์ˆ˜ ์—†๋‹ค๋Š” ์ ์„ ๊ฐ์•ˆํ•  ๋•Œ ๊ทธ๋ ‡๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ด ์•ˆ์ „ํ•˜๋‹ค๋Š” ๋ฐ ๋™์˜ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด) ์ปค๋ฎค๋‹ˆํ‹ฐ๊ฐ€ ํ•„์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋” ๋„“์€ ์˜๋ฏธ(๋ฐฑ์—”๋“œ, pip/ํ”„๋ก ํŠธ์—”๋“œ ๋ฐ ์ตœ์ข… ์‚ฌ์šฉ์ž์— ๋Œ€ํ•œ)๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ํ† ๋ก .

1 ๋ฌผ๋ก  "out of tree" ๋นŒ๋“œ์™€ ๋Œ€์กฐ์ ์œผ๋กœ "in-place" ์†Œ์Šค ํŠธ๋ฆฌ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ์š”์†Œ๋ฅผ ์ •์˜ ํ•˜๊ธฐ ์œ„ํ•ด PEP 517์„ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ๊ณ ์ •์‹œํ‚ค๊ธฐ ๋งค์šฐ ์–ด๋ ค์šด ๊ฐœ๋…์ด ๋  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์†”๋ฃจ์…˜ 4.(pip๋ฅผ ํ•ญ์ƒ ์ œ์ž๋ฆฌ์— ๋นŒ๋“œํ•˜๋„๋ก ๋ณ€๊ฒฝ) ๋ฐ 5.(pip๋ฅผ ์™ธ๋ถ€ ๋นŒ๋“œ ์˜ต์…˜๊ณผ ํ•จ๊ป˜ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ œ์ž๋ฆฌ์— ๋นŒ๋“œํ•˜๋„๋ก ๋ณ€๊ฒฝ) ์†”๋ฃจ์…˜์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ด์œ ๋กœ sdist(์†”๋ฃจ์…˜ 1.)๋ฅผ ํ†ตํ•œ ๊ฑด๋ฌผ์— ๋Œ€ํ•ด ์—‡๊ฐˆ๋ฆฐ ๊ฐ์ •์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ์ผ๋ถ€ ํ”„๋กœ์ ํŠธ์—๋Š” sdist-to-wheel ๊ฒฝ๋กœ๊ฐ€ ์†์ƒ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. sdists์—์„œ ๋นŒ๋“œ๊ฐ€ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฐ€์น˜๋ฅผ ํ™•์ธํ•˜๋Š” ๋™์•ˆ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ง€๊ธˆ ์ˆ˜ํ–‰ํ•˜๋ฉด ๋งŽ์€ ์ตœ์ข… ์‚ฌ์šฉ์ž ๋นŒ๋“œ๊ฐ€ ํ™•์‹คํžˆ ์ค‘๋‹จ๋ฉ๋‹ˆ๋‹ค.
  2. ํฐ sdist๊ฐ€ ์žˆ๋Š” ํ”„๋กœ์ ํŠธ์™€ ์ถ”๊ฐ€ ํ•˜์œ„ ํ”„๋กœ์„ธ์Šค ํ˜ธ์ถœ๋กœ ์ธํ•ด ์—ฌ์ „ํžˆ ์„ฑ๋Šฅ์— ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค.
  3. ๊ฐœ์ธ์ ์œผ๋กœ ํ”„๋กœ์ ํŠธ์—์„œ ๋นŒ๋“œ๋œ ์•„ํ‹ฐํŒฉํŠธ๋ฅผ ๊ฒŒ์‹œํ•˜๊ณ  ์†Œ์Šค ๋ฆด๋ฆฌ์Šค์— ๋Œ€ํ•ด ์„ ํ˜ธํ•˜๋Š” ์ฝ”๋“œ ํ˜ธ์ŠคํŒ… ํ”Œ๋žซํผ(์˜ˆ: VCS ์ฒดํฌ์•„์›ƒ์˜ ์กด์žฌ์— ์˜์กดํ•˜๋Š” ๋ฐฑ์—”๋“œ๋ฅผ ์ฐธ์กฐํ•˜๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์ ์ด๋ฏ€๋กœ ๊ฑด๋ฌผ์€ ์ž‘๋™ํ•˜๋Š” sdist๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ๋†๊ตฌ๋Œ€๋ฅผ ๋›ฐ์–ด ๋„˜์„ ํ•„์š”๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  PEP 517์€ ๋ฐฑ์—”๋“œ๊ฐ€ UnsupportedOperation ๋Œ€ํ•ด build_sdist UnsupportedOperation ๋ฅผ ์˜ฌ๋ฆด ์ˆ˜ ์žˆ๋„๋ก ๊ตฌ์ฒด์ ์œผ๋กœ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค.

ํ† ๋ก ์— ๋Œ€ํ•œ ์ด

๋‚˜๋Š” ์†”๋ฃจ์…˜ 3์˜ ๊ฒฝ๋กœ์— ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ๋ช…๋ฐฑํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ๊ฐ€๋Šฅํ•˜๋ฉด ์ถ”๊ฐ€ ์˜ต์…˜์„ ํ”ผํ•ด์•ผ ํ•œ๋‹ค๋Š” ๋ฐ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ ๋งํฌ๋œ ํ† ๋ก  ์Šค๋ ˆ๋“œ์—์„œ ์ธํ”Œ๋ ˆ์ด์Šค ๋นŒ๋“œ์— ์ฐฌ์„ฑํ•˜๋Š” ๋ชฉ์†Œ๋ฆฌ๊ฐ€ ์žˆ์—ˆ์ง€๋งŒ ์‹ค์ œ๋กœ ํ•ด๋‹น ์ ‘๊ทผ ๋ฐฉ์‹์„ ํƒ์ƒ‰ํ•˜๋ ค๋ฉด ํ•ด๋‹น ํŠน์ • ์ฃผ์ œ์— ๋Œ€ํ•œ ์ง‘์ค‘์ ์ธ ์ปค๋ฎค๋‹ˆํ‹ฐ ํ† ๋ก ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

  • ์ œ์ž๋ฆฌ์— sdist๋ฅผ ๋งŒ๋“ค๊ณ  ์ž„์‹œ ์œ„์น˜์— sdist์˜ ์••์ถ•์„ ํ‘ผ ๋‹ค์Œ ๊ทธ ์œ„์น˜์—์„œ ๋นŒ๋“œํ•ฉ๋‹ˆ๋‹ค.

์ข‹์€ ์ ‘๊ทผ ๋ฐฉ์‹์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

IMO ๊ฐ€๋Šฅ์„ฑ์€ ๋กœ์ปฌ ๋””๋ ‰ํ† ๋ฆฌ์™€ ๊ด€๋ จ๋œ ๋Œ€๋ถ€๋ถ„์˜ pip install ์‹คํ–‰์—์„œ ๋‹จ์ผ ํŒจํ‚ค์ง€์— ๋Œ€ํ•ด ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์œผ๋กœ pip install . ์ƒ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ํŒจํ‚ค์ง€ ๊ฐœ๋ฐœ ์›Œํฌํ”Œ๋กœ์˜ ์ผ๋ถ€๋กœ ์ˆ˜ํ–‰๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค.

์ด ํ–‰๋™์€ ๋‹ค์Œ๊ณผ ๊ฐ™์•„์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

  • ๋ฐฑ์—”๋“œ๊ฐ€ sdist๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์—†์œผ๋ฉด local-dir -> wheel(in-place)์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    • ์ด ๊ฒฝ์šฐ local-dir -> wheel์ด ๋ฉฑ๋“ฑ์„ฑ ์ž‘์—…์ธ์ง€ ํ™•์ธํ•˜๋Š” ์ฑ…์ž„์€ ๋ฐฑ์—”๋“œ์— ๋งค์šฐ ํฌ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

  • ๋ฐฑ์—”๋“œ๊ฐ€ sdist๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ local-dir -> sdist -> unpacked-sdist -> wheel์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

local-dir -> sdist -> wheel์„ ์ˆ˜ํ–‰ํ•˜๋ฉด ์ถ”๊ฐ€ ํ˜ธ์ถœ ์„ธํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํŠนํžˆ ๊ฐœ๋ฐœ ์ค‘์— ์ƒ์„ฑ๋œ sdist๊ฐ€ ์ •์ƒ์ธ์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด ํ•ฉ๋ฆฌ์ ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. tox๋Š” ์ด๋ฏธ ์›Œํฌํ”Œ๋กœ์˜ ์ผ๋ถ€๋กœ ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์—ฌ๊ธฐ์—์„œ setuptools์˜ ๊ทธ๋‹ค์ง€ ์นœ์ˆ™ํ•˜์ง€ ์•Š์€ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•ด ์ฒดํฌ ๋งค๋‹ˆํŽ˜์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ „๋ฐ˜์ ์œผ๋กœ, ๋กœ์ปฌ ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ sdist๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๋น„์šฉ์€ ํ”„๋กœ์ ํŠธ์—์„œ ๊ทธ๋Ÿฌํ•œ ์˜ค๋ฅ˜๋ฅผ ๋ฐฉ์ง€ํ•˜๋Š” ๋ฐ ๊ฐ€์น˜๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ํŠนํžˆ ๋กœ์ปฌ ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ์„ค์น˜ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์ด ํ”„๋กœ์ ํŠธ ๊ฐœ๋ฐœ์ž์ผ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๋กค์•„์›ƒ๊ณผ ๊ด€๋ จํ•˜์—ฌ #6536์ด ์–ด๋–ป๊ฒŒ ๋‚˜์˜ค๋Š”์ง€ ์ง€์ผœ๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ด์ „ํ•  ์ˆ˜ ์žˆ๋Š” ๋ช‡ ๊ฐ€์ง€๋ฅผ ํ™•์‹คํžˆ ๋ฐฐ์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” sdist๋ฅผ ๋นŒ๋“œ/ํ•ด์ œํ•˜๊ณ  ์„ค์น˜ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค sdist๋ฅผ ๋นŒ๋“œ/์„ค์น˜ํ•˜๋Š” ๊ฒƒ์„ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค(๋”ฐ๋ผ์„œ setup.py install ๋˜๋Š” setup.py bdist_wheel ๋˜๋Š” PEP 517 ๋ฐฑ์—”๋“œ์—์„œ build_wheel ํ˜ธ์ถœ) ๊ทธ๊ฒƒ์„ ํ†ตํ•ด์„œ. ๋‚ด ๊ตฌ์ฒด์ ์ธ ์ด์œ ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  1. ์ฆ‰์‹œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ฐ€์žฅ ๋งŽ์€ ์ˆ˜์˜ ์‚ฌ์šฉ์ž๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

    1. pip๊ฐ€ local-dir -> installed(ํœ  ๋นŒ๋“œ ์ธํ”Œ๋ ˆ์ด์Šค ๋˜๋Š” setup.py install ๋ฅผ ํ†ตํ•ด)๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. local-dir -> ์„ค์น˜๋ฅผ ์›ํ•˜๋Š” ์‚ฌ์šฉ์ž๋Š” pip install local-dir ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. local-dir -> sdist -> ์„ค์น˜์—์„œ ์ด๋™ํ•˜๋ ค๋Š” ์‚ฌ์šฉ์ž๋Š” ์ž์œ ๋กญ๊ฒŒ sdist๋ฅผ ์ƒ์„ฑํ•œ ๋‹ค์Œ pip install ./path/to/sdist ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. sdist๋ฅผ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ๋Š” ๋Œ€์ฒด ๋„๊ตฌ๊ฐ€ ๋งŽ์ด ์žˆ์œผ๋ฉฐ, ์ด๋Š” ์‚ฌ์šฉ์ž๊ฐ€ PyPI์— ์—…๋กœ๋“œํ•˜๋Š” ๋ฐฐํฌํŒ์„ ์†์œผ๋กœ ์ œ์ž‘ํ•˜์ง€ ์•Š๋Š” ํ•œ ์‚ฌ์šฉ์ž๊ฐ€ ์ด๋ฏธ ๊ฐ€์ง€๊ณ  ์žˆ์„ ๊ฐ€๋Šฅ์„ฑ์ด ๋” ํฐ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

    2. ์ด์ œ pip๊ฐ€ local-dir -> sdist -> ์„ค์น˜๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. local-dir -> ์„ค์น˜๋กœ ์ด๋™ํ•˜๋ ค๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ๋Š” pip์™€ ๊ด€๋ จ๋œ ์˜ต์…˜์ด ์—†์Šต๋‹ˆ๋‹ค. local-dir -> sdist -> installed ์—์„œ ์ด๋™ํ•˜๋ ค๋Š” ์‚ฌ์šฉ์ž๋Š” pip install local-dir ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ต์…˜์ด ์—†๋Š” ์‚ฌ์šฉ์ž๋Š” pip์—๊ฒŒ ๋™์ž‘์„ ์ œ์–ดํ•˜๋Š” โ€‹โ€‹์˜ต์…˜์„ ์š”์ฒญํ•˜๊ฑฐ๋‚˜ ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ํ•„์š”ํ•˜์ง€ ์•Š์€ ๋‹ค๋ฅธ ๋„๊ตฌ๋ฅผ ์ฐพ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  2. local-dir -> sdist -> installed๋ฅผ ๊ตฌํ˜„ํ•˜๋ฉด ์•„๋งˆ๋„ VCS ๊ธฐ๋ฐ˜ ์š”๊ตฌ ์‚ฌํ•ญ์— ๋Œ€ํ•ด์„œ๋„ ์ˆ˜ํ–‰ํ•  ๊ฒƒ์ž…๋‹ˆ๊นŒ? ๊ทธ๋ ‡๋‹ค๋ฉด ๋” ๋งŽ์€ ์ž‘์—…์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž๊ฐ€ ๊ธฐ์–ตํ•ด์•ผ ํ•˜๊ฑฐ๋‚˜ ์ง€์›์„ ์ œ๊ณตํ•  ๋•Œ ์„ค์น˜๊ฐ€ ์ฒ˜๋ฆฌ๋˜๋Š” ๋ฐฉ์‹์˜ ์ฝ”๋“œ ๋ฐ ํŽธ์ฐจ๋ฅผ ํ†ตํ•œ ์ถ”๊ฐ€ ๊ฒฝ๋กœ์ž…๋‹ˆ๋‹ค.
  3. ๊ตฌํ˜„ํ•ด์•ผ ํ•  ์ตœ์†Œ ์ž‘์—…๋Ÿ‰. local-dir -> installed( here , here , here )๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ๋ณ€๊ฒฝํ•  ๊ณณ์ด ์„ธ ๊ณณ ์žˆ์Šต๋‹ˆ๋‹ค. local-dir -> sdist -> ์„ค์น˜์˜ ๊ฒฝ์šฐ #6607์ด ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ์ด๊ฒƒ์„ ๊ตฌํ˜„ํ•˜๊ณ  ์‹ถ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์•„ํ‹ฐํŒฉํŠธ ๋‹ค์šด๋กœ๋“œ/ํ•ด์‹œ ๊ฒ€์‚ฌ์™€ ์œ ์‚ฌํ•œ ์ฝ”๋“œ ๊ธฐ๋ฐ˜์˜ ๋งŽ์€ ์œ„์น˜์—์„œ ๋๋‚  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
  4. IMO, ๊ธฐ์กด ํ…Œ์ŠคํŠธ๋Š” local-dir -> ์„ค์น˜๋œ ์ฝ”๋“œ ๊ฒฝ๋กœ๋ฅผ ์ปค๋ฒ„ํ•˜๊ธฐ์— ์ถฉ๋ถ„ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ…Œ์ŠคํŠธํ•  ์ž‘์—…์ด ๊ฐ€์žฅ ์ ์Šต๋‹ˆ๋‹ค. local-dir -> sdist -> ์„ค์น˜๋œ ๊ฒฝ๋กœ์˜ ๊ฒฝ์šฐ ์‹ค์ œ๋กœ sdist๋ฅผ ๋นŒ๋“œํ•˜๊ณ  ์žˆ๊ณ  ํœ ์„ ์ง์ ‘ ๋นŒ๋“œํ•˜๋Š” ๋ฐ ํด๋ฐฑ์ด ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.
  5. ์ตœ์†Œ ์ž‘์—…๋Ÿ‰(๊ณ„์‚ฐ์ƒ). ๋‹ค๋ฅธ ๊ณณ์—์„œ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด local-dir -> sdist -> installed๋Š” ์ถ”๊ฐ€ ํ•˜์œ„ ํ”„๋กœ์„ธ์Šค ํ˜ธ์ถœ์ž…๋‹ˆ๋‹ค(ํ•ด๋‹น ํ•˜์œ„ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž‘๋™ ์ค‘์ž„). ๋˜ํ•œ ํœ  ๋นŒ๋“œ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์ „์— pip๊ฐ€ sdist(hello ๋ฐ”์ด๋Ÿฌ์Šค ์Šค์บ๋„ˆ ๋ฐ ๋Š๋ฆฐ ๋””์Šคํฌ)์˜ ์••์ถ•์„ ํ’€์–ด์•ผ ํ•จ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

์ ‘๊ทผ ๋ฐฉ์‹์— ๊ด€๊ณ„์—†์ด ์ œ์ž๋ฆฌ์—์„œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ๋•Œ ๋ณผ ์ˆ˜ ์žˆ๋Š” ์œ ์ผํ•œ ๋ฌธ์ œ๋Š” setuptools ๋นŒ๋“œ์˜ ๊ฒฝ์šฐ(์ด๊ฒƒ์ด ๋ ˆ๊ฑฐ์‹œ ๋ฐ PEP 517์— ์ ์šฉ๋œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค) ํ”„๋กœ์ ํŠธ ๋””๋ ‰ํ† ๋ฆฌ์— .egg-info ๋กœ ๋๋‚  ๊ฒƒ์ด๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. pip๊ฐ€ ํ•ด๋‹น ๋””๋ ‰ํ† ๋ฆฌ์—์„œ python -m pip ๋กœ ํ˜ธ์ถœ๋  ๋•Œ "์„ค์น˜๋œ ํŒจํ‚ค์ง€"๋กœ. ์ด๊ฒƒ์€ #4575์— ์˜ํ•ด ์ˆ˜์ •๋  ๊ฒƒ์ด๋ฉฐ, ์ด๋Š” ์•„๋งˆ๋„ ์–ด๋–ค ์ฒด๊ณ„์— ๋Œ€ํ•ด ์„ค์น˜๋œ ํŒจํ‚ค์ง€์— ๋Œ€ํ•œ ์ฟผ๋ฆฌ์— ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ํฌํ•จํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

sdist ๋นŒ๋“œ๋ฅผ ๊ฑด๋„ˆ๋›ฐ๊ณ  ์ง์ ‘ ํŠธ๋ฆฌ ๋‚ด ๋นŒ๋“œ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ์•„์ด๋””์–ด๊ฐ€ pip๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ทจํ•˜๊ณ  local-dir -> sdist -> wheel์„ ์‹œ๋„ํ•˜์ง€ ์•Š๋Š” ๋” ๋‚˜์€ ์ ‘๊ทผ ๋ฐฉ์‹์ด๋ผ๋Š” ๋ฐ ๋™์˜ํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

Fedora์—์„œ Python RPM ํŒจํ‚ค์ง€๋ฅผ ๋นŒ๋“œํ•  ๋•Œ ์šฐ๋ฆฌ๋Š” ๊ณต๋ฃก์ด๋ฉฐ ์”ฌ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ํ‘œ์ค€ ๋ฐฉ๋ฒ•์€ python setup.py build ์ž…๋‹ˆ๋‹ค. PEP 517์—์„œ๋Š” pip wheel ๋Œ€์‹  ์‚ฌ์šฉํ•˜๋Š” "์ž„์‹œ" ๋ฐฉ๋ฒ•์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ™•์žฅ ๋ชจ๋“ˆ์˜ ๊ฒฝ์šฐ pip๊ฐ€ ๋นŒ๋“œ์— ์‚ฌ์šฉํ•˜๋Š” "์†Œ์Šค๋ฅผ tmp๋กœ ์ด๋™ํ•˜๊ณ  ๊ฑฐ๊ธฐ์—์„œ ๋นŒ๋“œ" ์ ‘๊ทผ ๋ฐฉ์‹์— ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๋นŒ๋“œ ๊ธฐ๊ณ„๋Š” ์ผ๋ถ€ ์ปดํŒŒ์ผ๋Ÿฌ ํ”Œ๋ž˜๊ทธ๋ฅผ ์ฃผ์ž…ํ•˜๋ฏ€๋กœ ๋นŒ๋“œ ์•„ํ‹ฐํŒฉํŠธ(์ด ๊ฒฝ์šฐ .so ํ™•์žฅ ๋ชจ๋“ˆ)์— ์†Œ์Šค์— ๋Œ€ํ•œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ๋‚˜์ค‘์— ๋นŒ๋“œ ์•„ํ‹ฐํŒฉํŠธ๋ฅผ ํƒ์ƒ‰ํ•˜๊ณ  ์ด ์ •๋ณด๋ฅผ ์ถ”์ถœํ•˜๊ณ  ์†Œ์Šค๋ฅผ /usr/src/debug ์— ๋ณต์‚ฌํ•˜์—ฌ ํŠน์ˆ˜ *-debugsource RPM์„ ํ†ตํ•ด ์„ค์น˜ํ•˜๋Š” ์‰˜ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. mahcinery๋Š” ๋ชจ๋“  ๊ฒƒ์ด ์ž‘์—… ํŠธ๋ฆฌ ๋‚ด์—์„œ ๊ตฌ์ถ•๋˜๊ธฐ๋ฅผ ๊ธฐ๋Œ€ํ•˜๋ฉฐ ์™ธ๋ถ€์—์„œ ๊ตฌ์ถ•ํ•  ๋•Œ๋Š” ์‹ค์ œ๋กœ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ์šฐ๋ฆฌ ์ธก์—์„œ ๋ฌธ์ œ๋ฅผ ์™„ํ™”ํ•˜๊ธฐ ์œ„ํ•ด (ํ•จ๊ป˜) ํ•  ์ˆ˜ ์žˆ๋Š” ์ผ์ž…๋‹ˆ๋‹ค.

  1. RPM ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์˜ˆ์ƒํ•˜๋Š” ์œ„์น˜์— $TMPDIR ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: export TMPDIR=%{_builddir}/.tmp (๋ฐ ์ƒ์„ฑ)).
  2. --no-clean ์˜ต์…˜๊ณผ ํ•จ๊ป˜ pip wheel ์‚ฌ์šฉํ•˜์—ฌ ๋ณต์‚ฌํ•œ ์†Œ์Šค๋ฅผ $TMPDIR
  3. ์‰˜ ์ฟตํ‘ธ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ "๋‚ด ์†Œ์Šค๊ฐ€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ" ์ •๋ณด๋ฅผ ์˜ฌ๋ฐ”๋ฅธ ์œ„์น˜์— ๋‹ค์‹œ ์ž‘์„ฑํ•˜์‹ญ์‹œ์˜ค. find %{buildroot} -iname '*.so' -print0 | xargs --no-run-if-empty -0 -n1 /usr/lib/rpm/debugedit -b "%{_builddir}/.tmp/pip-req-build-"* -d "$PWD"
  4. (์„ ํƒ ์‚ฌํ•ญ: $TMPDIR ์ˆ˜๋™์œผ๋กœ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.)

๋„ˆ๋ฌด ๋งŽ์€ ๊ตฌํ˜„ ์„ธ๋ถ€ ์ •๋ณด์— ์˜์กดํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„ธ ๋ฒˆ์งธ ๋‹จ๊ณ„๋Š” ํŠนํžˆ ๋งˆ์Œ์— ๋“ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

  • /usr/lib/rpm/debugedit API ๋ฐ ์œ„์น˜(๋ฐ ์กด์žฌ)
  • pip-req-build ์ด๋ฆ„
  • pip๊ฐ€ ์†Œ์Šค๋ฅผ ๋นŒ๋“œํ•˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜

pip๊ฐ€ ํ•ญ์ƒ ์ œ์ž๋ฆฌ์— ๊ตฌ์ถ•๋˜๊ฑฐ๋‚˜ ์ด์— ๋Œ€ํ•œ ๋ช…๋ น์ค„ ์Šค์œ„์น˜๊ฐ€ ์žˆ์œผ๋ฉด ๋ฌธ์ œ๊ฐ€ ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค.

๋‹ค์šด์ŠคํŠธ๋ฆผ ๋ณด๊ณ ์„œ: https://bugzilla.redhat.com/show_bug.cgi?id=1806625

sdist ๋นŒ๋“œ๋ฅผ ๊ฑด๋„ˆ๋›ฐ๊ณ  ์ง์ ‘ ํŠธ๋ฆฌ ๋‚ด ๋นŒ๋“œ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ์•„์ด๋””์–ด๊ฐ€ pip๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ทจํ•˜๊ณ  local-dir -> sdist -> wheel์„ ์‹œ๋„ํ•˜์ง€ ์•Š๋Š” ๋” ๋‚˜์€ ์ ‘๊ทผ ๋ฐฉ์‹์ด๋ผ๋Š” ๋ฐ ๋™์˜ํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

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

  1. ์šฐ๋ฆฌ๋Š” "์˜ฌ๋ฐ”๋ฅด๊ฒŒ" ์ž‘๋™ํ•˜๋Š” ๋ฐฑ์—”๋“œ์— ์˜์กดํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ด์ „ ๋นŒ๋“œ์˜ ๋‚จ์€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋‹ค๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ์ œ๊ณตํ•˜์ง€ ์•Š๋Š” ๋“ฑ์˜ ์ž‘์—…์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๊ฐ€์ •์„ ํ•˜๋Š” ๊ฒƒ์€ ๊ดœ์ฐฎ์ง€๋งŒ ์‚ฌ๋žŒ๋“ค์ด "pip built my wheel wrong"๋ผ๊ณ  ๋งํ•˜๊ธฐ ์‹œ์ž‘ํ•˜๋ฉด ์ง€์› ๋น„์šฉ์ด ๊ฑฑ์ •๋˜๊ณ  ๋””๋ฒ„๊ทธ๋งŒ ํ•˜๋ฉด ๋ฐฑ์—”๋“œ ๋ฌธ์ œ๋ผ๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  2. ์šฐ๋ฆฌ๊ฐ€ ์–ด๋–ค ์ ‘๊ทผ ๋ฐฉ์‹์„ ์ทจํ•˜
  3. ์œ„์˜ ๊ฒฐ๊ณผ๋กœ ์šฐ๋ฆฌ๋Š” ํ˜„์žฌ "๋ณต์‚ฌ ๋ฐ ๋นŒ๋“œ" ์ ‘๊ทผ ๋ฐฉ์‹์— ์˜์กดํ•˜๋Š” ํ”„๋กœ์ ํŠธ๊ฐ€ ์—†๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

... ๊ทธ๋ฆฌ๊ณ  ๋ฌผ๋ก  ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์ด ๋ณ€๊ฒฝ์„ ๊ตฌํ˜„ํ•˜๋Š” PR์„ ์ž‘์„ฑํ•ด์•ผ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค(ํ…Œ์ŠคํŠธ, ๋ฌธ์„œ ๋“ฑ - ์ผ๋ฐ˜์ ์ธ ๊ฒƒ๋“ค ํฌํ•จ) ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์šฐ๋ฆฌ๊ฐ€ ํ•˜๋Š” ๋ชจ๋“  ๊ฒƒ์€ ์ด์•ผ๊ธฐํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค ๐Ÿ™‚

์šฐ๋ฆฌ๋Š” "์˜ฌ๋ฐ”๋ฅด๊ฒŒ" ์ž‘๋™ํ•˜๋Š” ๋ฐฑ์—”๋“œ์— ์˜์กดํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ด์ „ ๋นŒ๋“œ์˜ ๋‚จ์€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋‹ค๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ์ œ๊ณตํ•˜์ง€ ์•Š๋Š” ๋“ฑ์˜ ์ž‘์—…์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๊ฐ€์ •์„ ํ•˜๋Š” ๊ฒƒ์€ ๊ดœ์ฐฎ์ง€๋งŒ ์‚ฌ๋žŒ๋“ค์ด "pip built my wheel wrong"๋ผ๊ณ  ๋งํ•˜๊ธฐ ์‹œ์ž‘ํ•˜๋ฉด ์ง€์› ๋น„์šฉ์ด ๊ฑฑ์ •๋˜๊ณ  ๋””๋ฒ„๊ทธ๋งŒ ํ•˜๋ฉด ๋ฐฑ์—”๋“œ ๋ฌธ์ œ๋ผ๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

"๊นจ๋—ํ•œ" ํ›„ํฌ๋ฅผ ํฌํ•จํ•˜๋„๋ก PEP 517 ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ™•์žฅํ•˜๋Š” ๊ฒƒ์ด ํ•ฉ๋ฆฌ์ ์ž…๋‹ˆ๊นŒ? ์šฐ๋ฆฌ๋Š” ์•„๋งˆ๋„ ๋‹ค๋ฅธ ๋…ธ๋ ฅ(์˜ˆ: ํŽธ์ง‘ ๊ฐ€๋Šฅํ•œ ์„ค์น˜ ๊ตฌํ˜„, PEP 517 ํ”„๋กœ์ ํŠธ๋ฅผ ๋นŒ๋“œํ•˜๋Š” ํŒจํ‚ค์ง€ ๊ฐœ๋ฐœ ๋„๊ตฌ ๋นŒ๋“œ)์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋Š” ์–ด๋–ค ์ง€์ ์œผ๋กœ ๊ทธ๊ฒƒ์„ ์›ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. pip๋Š” ํŠธ๋ฆฌ ๋‚ด ๋นŒ๋“œ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์ „์— ๋‚จ์€ ์“ฐ๋ ˆ๊ธฐ๊ฐ€ ์—†๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์—ฌ๊ธฐ์—์„œ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

"๊นจ๋—ํ•œ" ํ›„ํฌ๋ฅผ ํฌํ•จํ•˜๋„๋ก PEP 517 ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ™•์žฅํ•˜๋Š” ๊ฒƒ์ด ํ•ฉ๋ฆฌ์ ์ž…๋‹ˆ๊นŒ?

์•„๋งˆ๋„? ๊ทธ๋Ÿฌ๋‚˜ pip๊ฐ€ ์ž๋™์œผ๋กœ clean ํ˜ธ์ถœํ•˜๋ฉด ์ฆ๋ถ„ ๋นŒ๋“œ ๋“ฑ์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ๊ทธ๋ ‡๊ฒŒ ํ•˜์ง€ ์•Š์œผ๋ ค ๋Š” ์‚ฌ๋žŒ์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ๋‹ค๋ฅธ ์˜ต์…˜์œผ๋กœ ๋๋‚ฉ๋‹ˆ๋‹ค.

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

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

์ด๊ฒƒ์„ ๋ช…์‹œ์ ์ธ ์š”๊ตฌ ์‚ฌํ•ญ์œผ๋กœ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด PEP-517์„ ํ™•์žฅํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์„ ๋ช…์‹œ์ ์ธ ์š”๊ตฌ ์‚ฌํ•ญ์œผ๋กœ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด PEP-517์„ ํ™•์žฅํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์ด๋ฏธ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋งํ•ฉ๋‹ˆ๋‹ค.

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

๋ฐฑ์—”๋“œ๊ฐ€ ์˜๋„์ ์œผ๋กœ ์ด ์š”๊ตฌ ์‚ฌํ•ญ์„ ์œ„๋ฐ˜ํ•  ๊ฐ€๋Šฅ์„ฑ์€ ๊ทธ๋ฆฌ ๋งŽ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋ฌธ์ œ๋ฅผ pip ๋ฌธ์ œ๋กœ ๋ณด๊ณ ํ•˜๊ณ  ๋ฐฑ์—”๋“œ ํ”„๋กœ์ ํŠธ๋กœ ๋ฆฌ๋””๋ ‰์…˜๋˜๋ฏ€๋กœ ์•ฝ๊ฐ„์˜ ์ถ”๊ฐ€ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

Fedora์— ๋Œ€ํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์ฐพ์œผ๋ ค๊ณ  ํ•  ๋•Œ https://github.com/pypa/pip/issues/7872 ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

#7731 ๋ฐ ์นœ๊ตฌ๋“ค๊ณผ ํ•จ๊ป˜ ".egg-info in cwd" ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ œ์ž๋ฆฌ์— ๋นŒ๋“œํ•  ๋•Œ ๊ฑฑ์ •ํ•  ์ผ์ด ํ•œ ๊ฐ€์ง€ ์ค„์–ด๋“ญ๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ์˜ต์…˜ 4(ํ•ญ์ƒ ์ œ์ž๋ฆฌ์— ๋นŒ๋“œ)๊ฐ€ #7882์—์„œ ๊ตฌํ˜„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ์ด์ œ (#7951์— ๋”ฐ๋ผ) pip, pip 20.1b1์˜ ๋ฒ ํƒ€ ๋ฆด๋ฆฌ์Šค๋ฅผ ๊ฒŒ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฆด๋ฆฌ์Šค์—๋Š” ์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ์†”๋ฃจ์…˜์„ ๊ตฌํ˜„ํ•œ #7882๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

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

๋˜ํ•œ "์˜ˆ, ์ด์ œ ๋” ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค!"๋ผ๋Š” ๊ธ์ •์ ์ธ ํ”ผ๋“œ๋ฐฑ์„ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ๋ฌธ์ œ ์ถ”์ ๊ธฐ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ "๋ฌธ์ œ"๋กœ ๊ฐ€๋“ ์ฐจ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. :)

์šฐ๋ฆฌ๋Š” Fedora์—์„œ ๊ทธ๊ฒƒ์„ ์™„์ „ํžˆ ํ…Œ์ŠคํŠธํ•  ๊ณ„ํš์ด์ง€๋งŒ(๋‹น์‹ ์˜ ์ฝ”๋ฉ˜ํŠธ ์ „์— ์ด๋ฏธ ๊ณ„ํšํ–ˆ์Šต๋‹ˆ๋‹ค), ํ™”์š”์ผ ๋งˆ๊ฐ์ผ์€ ์•„๋งˆ๋„ ํ˜„์‹ค์ ์ด์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@hroncok Fedora๊ฐ€ ์–ธ์ œ ์ด๋Ÿฌํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์›”์š”์ผ์— ์–ด๋–ป๊ฒŒ๋“  ํ•ด๋ณผ ์ˆ˜ ์žˆ๋„๋ก ์ตœ์„ ์„ ๋‹คํ•˜๊ฒ ์ง€๋งŒ ์–ด๋–ค ์•ฝ์†๋„ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์‹ค์ œ๋กœ 20.1b1์€ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

https://mail.python.org/archives/list/[email protected]/message/5EAUIYYIRKXEHTAG5GQ7EJHSXGZIW2F7/์˜ ๋ณด๋‹ค ์ผ๋ฐ˜์ ์ธ 20.1b1 ํ”ผ๋“œ๋ฐฑ

๋งŒ์„ธ! @hroncok ๋ฒ ํƒ€๋ฅผ ์‚ฌ์šฉํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ๋งค์šฐ ๊ฐ์‚ฌ! ^>^

๋นŒ๋“œ ์ธ ํ”Œ๋ ˆ์ด์Šค์˜ ํ•œ ๊ฐ€์ง€ ๊ฒฐ๊ณผ: ์—ฌ๋Ÿฌ ๋ฒ„์ „์˜ Python์„ ๋ณ‘๋ ฌ๋กœ(manylinux ๋„์ปค ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์—์„œ) ํœ ์„ ๋นŒ๋“œํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด๋ถ€ ๋นŒ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ณ‘๋ ฌ ๋นŒ๋“œ๊ฐ€ ๋‹ค๋ฅธ ๋ฒ„์ „ ์ถฉ๋Œ๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํŠธ๋ฆฌ ์™ธ๋ถ€ ๋นŒ๋“œ์—์„œ๋Š” ๊ฐ ๋ฒ„์ „์ด ๋ณ„๋„์˜ ํŠธ๋ฆฌ๋ฅผ ๋งŒ๋“ค๊ณ  ๋ฌธ์ œ๊ฐ€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

@manthey ํ† ๋ก ์ด #

๊ทธ๋ž˜์„œ ์ด์ œ 10์ผ์ด ๋„˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ณ€๊ฒฝ ์‚ฌํ•ญ์— ๋Œ€ํ•ด ๋ช‡ ๊ฐ€์ง€ ๋ฌธ์ œ๊ฐ€ ์ œ๊ธฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค(๋ชจ๋‘ ์˜ˆ์ƒ - #8165, #8168, #8196). ๋ณ€ํ™”๊ฐ€ ๋„์›€์ด ๋œ๋‹ค๊ณ  ๋ช…์‹œ์ ์œผ๋กœ ์–ธ๊ธ‰ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค๋„ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

  • ์„ฑ๋Šฅ ๋ฌธ์ œ ์™ธ์—๋„ ์ด์ „ ๋™์ž‘(์ž„์‹œ ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ ๋ณต์‚ฌ)์—๋Š” ํ˜ธ์ถœ์ž๋งŒ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ปจํ…์ŠคํŠธ ์ง€์‹ ์—†์ด๋Š” pip๋กœ ์ˆ˜์ •ํ•  ์ˆ˜ ์—†๋Š” ์ •ํ™•์„ฑ ๋ฌธ์ œ(์œ„์— ๋งํฌ๋จ)๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์ƒํ•œ ์ƒํ™ฉ์— ๋Œ€์ฒ˜ํ•˜๊ธฐ ์œ„ํ•œ ๋ฐ˜์ฐฝ๊ณ  - ํŠธ๋ฆฌ์˜ tmpdir, ์†Œ์ผ“ ๋“ฑ).
  • ์ด์ „ ๋™์ž‘์„ ํ™œ์„ฑํ™”ํ•˜๋Š” ์˜ต์…˜์—๋Š” ์—ฌ์ „ํžˆ ์ •ํ™•์„ฑ ๋ฐ ์„ฑ๋Šฅ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์˜ฌ๋ฐ”๋ฅธ ์†”๋ฃจ์…˜์—๋Š” ์˜ค๋Š˜๋‚  ์™„์ „ํžˆ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๋นŒ๋“œ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•œ ๋นŒ๋“œ ๋ฐฑ์—”๋“œ ์ง€์›์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค(์˜ˆ๋ฅผ ๋“ค์–ด setuptools bdist_wheel ์—๋Š” --bdist-dir ๊ฐ€ ์žˆ์ง€๋งŒ ์—ฌ์ „ํžˆ .egg-info ๋ฅผ ์”๋‹ˆ๋‹ค. ์žฅ์†Œ, https://github.com/pypa/setuptools/issues/1816, https://github.com/pypa/setuptools/issues/1825 ์ฐธ์กฐ). ์ด์ œ pip๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ž‘๋™ํ•˜๋ฏ€๋กœ ๋…ผ์˜๊ฐ€ ์ „ํ™˜๋˜์–ด ์˜ˆ๋ฅผ ๋“ค์–ด setuptools๊ฐ€ ์†Œ์Šค ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๊ฑด๋“œ๋ฆฌ์ง€ ์•Š๊ณ  ๋นŒ๋“œ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ์˜ต์…˜์„ ๋ฐœ์ „์‹œํ‚จ ๋‹ค์Œ ํ•ด๋‹น ์˜ต์…˜์„ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•ด PEP 517 ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•œ์ง€ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๊ทธ ๋™์•ˆ ๋ณด๊ณ ๋œ ๋ฌธ์ œ๋Š” ํ˜ธ์ถœ์ž๊ฐ€ ๋น„๊ต์  ์‰ฝ๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์˜ˆ: ์ž„์‹œ ๋””๋ ‰ํ† ๋ฆฌ์— ์ž์‹ ์„ ๋ณต์‚ฌํ•˜๊ฑฐ๋‚˜ ์ปจํ…์ŠคํŠธ์— ๋Œ€ํ•œ ์™„์ „ํ•œ ์ง€์‹์œผ๋กœ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ž„์‹œ tarball์„ ์ƒ์„ฑ).
  • ๋งˆ์ง€๋ง‰์œผ๋กœ, ์šฐ๋ฆฌ๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋กœ ํ™•์‹คํžˆ ๋งํ•˜๊ธฐ๋Š” ์–ด๋ ต์ง€๋งŒ, ๋‚ด ์ง๊ด€์€ ์ด ๋ณ€ํ™”๊ฐ€ ์ƒ์ฒ˜๋ฅผ ์ฃผ๋Š” ๊ฒƒ๋ณด๋‹ค ๋” ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๋„์›€์ด ๋œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ์ €๋Š” ๋ธŒ๋ ˆ์ดํ‚น ์ฒด์ธ์ง€๋ฅผ ์‹ซ์–ดํ•˜๋Š”๋ฐ ์ด๋ฒˆ ์ž‘์—…์€ ๊ฐ€๋ณ๊ฒŒ ํ•œ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ด๋Ÿฐ ์ด์œ ๋กœ ๊ฐœ์ธ์ ์œผ๋กœ ์œ ์ง€ํ•˜๋Š” ํŽธ์ž…๋‹ˆ๋‹ค.

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

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

pip wheel <localdir> ๋ฐ pip install <localdir> cd <localdir> ; setup.py bdist_wheel ์— ์–ด๋–ค ๊ฒฝ์šฐ์—๋Š” https://github.com/pypa/pip/issues/7555#issuecomment -595180864 ๋˜๋Š” #6276 ๋˜๋Š” ์ผ๋ฐ˜ ์˜ค๋ฅ˜๊ฐ€ ์žˆ๋Š” ๋‹ค๋ฅธ ๋ฒ„์ „์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” pip 20.1์ด ๊ทธ๋Ÿฐ ๋‚˜์œ ๋ฐ”ํ€ด/์„ค์น˜๋ฅผ ์ƒ์„ฑํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๊ทธ๋Ÿฐ ์˜๋ฏธ์—์„œ ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ์‹ค์ œ๋กœ ๋” ์ •ํ™•ํ•˜๋‹ค๊ณ  ๋ฏฟ์Šต๋‹ˆ๋‹ค.

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

๊ทธ๋ฆฌ๊ณ  ์—ฌ์ „ํžˆ setup.py sdist && pip install dist/*.tar.gz ์™€ ๋‹ค๋ฅธ ํœ ์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚ด ์ œ์•ˆ์€ PR์„ ๋˜๋Œ๋ฆฌ๊ณ  ๋จผ์ € sdist๋ฅผ ์„ž์€ ๋‹ค์Œ ๊ฒฐ๊ณผ sdist์—์„œ ํœ ์„ ๋นŒ๋“œํ•˜์—ฌ ์ˆ˜์ • ์‚ฌํ•ญ์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ํ”„๋กœ์ ํŠธ๊ฐ€ sdist๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ๋ฅผ ์ œ์™ธํ•˜๊ณ  ๋ชจ๋“  ์ •ํ™•์„ฑ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ํ•ด๊ฒฐํ•ด์•ผ ํ•  ์ค‘์š”ํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€๊ฐ€ ์•„๋‹Œ IMO์ž…๋‹ˆ๋‹ค.

๊ฑฐ๊ธฐ์—์„œ ํŠธ๋ ˆ์ด๋“œ ์˜คํ”„๋Š” ๋” ๋Š๋ ค์งˆ ๊ฒƒ์ด๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ผ๋‹จ ๊ตฌํ˜„ํ•˜๊ณ  ๋‚˜๋ฉด ์†๋„ ํ–ฅ์ƒ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋Š” ์„ ํƒ์  API๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด PEP 517 ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋”์šฑ ์„ธ๋ถ„ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ณ€ํ™”๋งŒํผ ๋น ๋ฅด์ง€๋Š” ์•Š๊ฒ ์ง€๋งŒ ํ™•์‹คํžˆ ๋” ๊ฐ€๊นŒ์ด ๊ฐˆ ์ˆ˜๋Š” ์žˆ์Šต๋‹ˆ๋‹ค.

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

์˜› ์†๋‹ด์ด ๋งํ•˜๋“ฏ์ด, ๋จผ์ € ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋งŒ๋“ค๊ณ , ๊ทธ ๋‹ค์Œ์—๋Š” ๋น ๋ฅด๊ฒŒ ํ•˜์‹ญ์‹œ์˜ค. ๋‚˜๋Š” ์ด PR๋กœ ์šฐ๋ฆฌ๊ฐ€ ๊ทธ๊ฒƒ์„ ๋นจ๋ฆฌ ๋งŒ๋“ค๊ณ  ๊ทธ๊ฒƒ์„ ์ˆ˜์ •ํ•˜๋Š” ์šฐ๋ฆฌ์˜ ๋Šฅ๋ ฅ์„ ์ž ๊ทธ๋Š” ๊ฒƒ์ด ๋‘๋ ต์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์—ฌ์ „ํžˆ sdists๋ฅผ ๊ฒ€์ฆํ•˜๋Š” ๊ฒƒ์ด ๋ฐ”๋žŒ์งํ•˜์ง€๋งŒ pip ์„ค์น˜ ์‹œ๊ฐ„์—๋Š” ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋Š” ๋ฐ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ์ด๊ฒƒ์€ ๋ฏธ๋ž˜์˜ sdist ๋นŒ๋” ๋„๊ตฌ ๋˜๋Š” pip ๋นŒ๋“œ ๋ช…๋ น์˜ ๊ธฐ๋Šฅ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋˜ํ•œ setup.py sdist ๋Š” ๋กœ์ปฌ ๋””๋ ‰ํ† ๋ฆฌ์— .egg-info๋ฅผ ์ƒ์„ฑํ•˜๋ฏ€๋กœ ์ฝ๊ธฐ ์ „์šฉ ์†Œ์Šค ๋””๋ ‰ํ† ๋ฆฌ ๋˜๋Š” ๋™์‹œ ๋นŒ๋“œ์— ๋Œ€ํ•ด ๋ณด๊ณ ๋œ ๋ฌธ์ œ๊ฐ€ ๊ทธ๋Œ€๋กœ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค.

pip ์„ค์น˜ ์‹œ๊ฐ„์— ๋ฐœ์ƒํ•˜์ง€ ์•Š์œผ๋ฉด ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ pip ์„ค์น˜ ์‹œ๊ฐ„๊นŒ์ง€ ๊ธฐ๋Šฅ์ ์œผ๋กœ ๋ฐœ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ฑด๋„ˆ๋›ด๋‹ค๋Š” ๊ฒƒ์€ ํ”„๋กœ์ ํŠธ๊ฐ€ VCS์—์„œ ์„ค์น˜๋œ ํŒจํ‚ค์ง€๋กœ ๊ณ„์† ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” ์—ฌ๋Ÿฌ ๊ฒฝ๋กœ๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜๋ฉฐ ๋ชจ๋“  ๊ฒฝ๋กœ๋Š” ์ฐจ์ด๊ฐ€ ๋‚  ์ˆ˜ ์žˆ๋Š” ๋˜ ๋‹ค๋ฅธ ๊ธฐํšŒ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ƒˆ๋กœ์šด ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ์„ค์น˜ ๊ฒฝ๋กœ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๋ชจ๋“  ์˜ต์…˜์€ ๊ฐ€์žฅ ์—„๊ฒฉํ•œ ํ”„๋กœ์ ํŠธ์˜ ๊ฒฝ์šฐ์—๋„ ๋””์Šคํฌ์— ๋‹ค๋ฅธ ๋ฐ”์ดํŠธ ์„ธํŠธ๋กœ ๋๋‚ฉ๋‹ˆ๋‹ค. ๋ฏธ๋ฌ˜ํ•œ ์ฐจ์ด๋Š” ํ•ญ์ƒ ์กด์žฌํ•˜๋ฉฐ ๊ทธ๋Ÿฌํ•œ ์ฐจ์ด๊ฐ€ ์˜๋ฏธ๊ฐ€ ์—†๊ธฐ๋ฅผ ๋ฐ”๋ž„ ๋ฟ์ž…๋‹ˆ๋‹ค. ๋˜๋Š” ๊ตฌ์กฐ์ ์œผ๋กœ ์ฒ˜์Œ๋ถ€ํ„ฐ ์ฐจ์ด๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์—†๋„๋ก ํ•˜์—ฌ ์ด๋Ÿฌํ•œ ์ฐจ์ด๋ฅผ ์ œ๊ฑฐํ•˜๊ธฐ ์œ„ํ•ด ํ•  ์ˆ˜ ์žˆ๋Š” ์ผ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ผ๋ถ€ ์„ฑ๋Šฅ ๋ฌธ์ œ๋Š” sdist๋ฅผ ํ†ตํ•ด ๋นŒ๋“œํ•  ๋•Œ ์‹ค์ œ๋กœ ๋‹ค์‹œ ๋‚˜ํƒ€๋‚  ์ˆ˜ ์žˆ์ง€๋งŒ pip < 20.1์—์„œ ์žˆ์—ˆ๋˜ ๊ฒƒ๋ณด๋‹ค ํ›จ์”ฌ ๋‚ฎ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ๋Œ€๋ถ€๋ถ„์€ .git ๋˜๋Š” venv , ๋˜๋Š” sdist์— ์—†๋Š” ๊ธฐํƒ€ ๊ด€๋ จ ์—†๋Š” ๋ฐฉ๋Œ€ํ•œ ๋‚ด์šฉ์„ ๋ณต์‚ฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

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

๋˜ํ•œ setup.py sdist ๋Š” ๋กœ์ปฌ ๋””๋ ‰ํ† ๋ฆฌ์— .egg-info ๋ฅผ ์ƒ์„ฑํ•˜๋ฏ€๋กœ ์ฝ๊ธฐ ์ „์šฉ ์†Œ์Šค ๋””๋ ‰ํ† ๋ฆฌ ๋˜๋Š” ๋™์‹œ ๋นŒ๋“œ์— ๋Œ€ํ•ด ๋ณด๊ณ ๋œ ๋ฌธ์ œ๊ฐ€ ๊ทธ๋Œ€๋กœ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” (์ ์–ด๋„ ๋น ๋ฅธ ํ…Œ์ŠคํŠธ๊ฐ€ ๋‚˜์™€ ๋™์˜ํ•จ) setuptools ( distutils ์•„๋‹˜)๋งŒ ์ˆ˜ํ–‰ํ•˜๊ณ  ์ด ๋™์ž‘์€ ๋‹ค๋ฅธ ๊ณณ์—์„œ dir์„ ์ƒ์„ฑํ•˜๋„๋ก ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋ฐฑ์—”๋“œ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๊นจ๋—ํ•œ sdist ์ƒ์„ฑ์„ ์ˆ˜ํ–‰ํ•˜๋„๋ก ๊ถŒ์žฅํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

FWIW, ์ €๋Š” sdist-generation --egg-info ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ž‘์—… ๋””๋ ‰ํ† ๋ฆฌ์— ๋คํ”„ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. generate-sdist-unpack-it-build-wheel ์ ‘๊ทผ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋ฉด generate_metadata ์ฒ˜๋Ÿผ ์ž„์‹œ ๋””๋ ‰ํ† ๋ฆฌ์— ๋คํ”„ํ•˜์‹ญ์‹œ์˜ค.

@pradyunsg ๋Š” setuptools์˜ ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ? ๋‚ด๊ฐ€ ๋งˆ์ง€๋ง‰์œผ๋กœ ํ™•์ธํ•œ sdist ๋ช…๋ น์—๋Š” .egg-info ๊ธฐ๋ณธ ์œ„์น˜๋ฅผ ์ง€์ •ํ•˜๋Š” ์˜ต์…˜์ด ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋Œ€๋กœ --egg-base ์˜ต์…˜์ด ์žˆ๋Š” egg_info ์—๋Š” #7978์—์„œ.

๋ฌผ๋ก ! setuptools์—์„œ ์ž˜๋ชป๋œ ํŒŒ์ผ์„ ๋ณด๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๐Ÿ™ˆ ์ •์ •ํ•ฉ๋‹ˆ๋‹ค.

์ด ๊ณต๊ฐ„์˜ ๋ชจ๋“  ๊ฒƒ์ด ์™œ ๊ทธ๋ ‡๊ฒŒ ๋ณต์žกํ•ฉ๋‹ˆ๊นŒ? :(

$  ls -la
total 8
drwxr-xr-x  3 dstufft  staff   96 May  6 14:26 .
drwxr-xr-x  9 dstufft  staff  288 Apr 28 15:46 ..
-rw-r--r--  1 dstufft  staff   85 Apr 23 16:23 setup.py

$  py setup.py egg_info --egg-base /tmp/foo sdist
/Users/dstufft/.pyenv/versions/3.8.2/lib/python3.8/site-packages/setuptools/dist.py:471: UserWarning: Normalizing '2020.04.23.3' to '2020.4.23.3'
  warnings.warn(
running egg_info
creating /tmp/foo/dstufft.testpkg.egg-info
writing /tmp/foo/dstufft.testpkg.egg-info/PKG-INFO
writing dependency_links to /tmp/foo/dstufft.testpkg.egg-info/dependency_links.txt
writing top-level names to /tmp/foo/dstufft.testpkg.egg-info/top_level.txt
writing manifest file '/tmp/foo/dstufft.testpkg.egg-info/SOURCES.txt'
reading manifest file '/tmp/foo/dstufft.testpkg.egg-info/SOURCES.txt'
writing manifest file '/tmp/foo/dstufft.testpkg.egg-info/SOURCES.txt'
running sdist
warning: sdist: standard file not found: should have one of README, README.rst, README.txt, README.md

running check
warning: Check: missing required meta-data: url

warning: Check: missing meta-data: either (author and author_email) or (maintainer and maintainer_email) must be supplied

creating dstufft.testpkg-2020.4.23.3
copying files to dstufft.testpkg-2020.4.23.3...
copying setup.py -> dstufft.testpkg-2020.4.23.3
Writing dstufft.testpkg-2020.4.23.3/setup.cfg
creating dist
Creating tar archive
removing 'dstufft.testpkg-2020.4.23.3' (and everything under it)

$ ls -la                                        
total 8
drwxr-xr-x  4 dstufft  staff  128 May  6 14:28 .
drwxr-xr-x  9 dstufft  staff  288 Apr 28 15:46 ..
drwxr-xr-x  3 dstufft  staff   96 May  6 14:28 dist
-rw-r--r--  1 dstufft  staff   85 Apr 23 16:23 setup.py

https://github.com/pypa/pip/issues/8165#issuecomment -624669107 ์ด๊ฒƒ์€ ๊ฝค ์‡ผ ์ค‘์ง€ ๋ฒ„๊ทธ์ฒ˜๋Ÿผ ๋Š๊ปด์ง€๋ฉฐ ํ‹€๋ฆผ์—†์ด ์šฐ๋ฆฌ ๋ฒ„๊ทธ๊ฐ€ ์•„๋‹ˆ์ง€๋งŒ PEP 517 ํ† ๋ก  ์ค‘์— ๋ฐœ์ƒํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ฃผ์žฅํ•œ ๋ฒ„๊ทธ ์œ ํ˜• ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ์ œ์ž๋ฆฌ ๋นŒ๋“œ๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

bdist_wheel ๋Š” ๊ณผ๊ฑฐ์— ๋นŒ๋“œ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ž๋™์œผ๋กœ ์ •๋ฆฌํ•˜๋„๋ก ์š”์ฒญ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ ๊ธฐ๋Šฅ์ด ๋“ค์–ด๊ฐ€์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ distutils ๋นŒ๋“œ๋Š” ๊นจ๋—ํ•ฉ๋‹ˆ๊นŒ?

SCons๋ผ๋ฉด ๊ด€์‹ฌ ์žˆ๋Š” ํŒŒ์ผ์„ ๊ธฐ์–ตํ•˜๊ณ  ํŒŒ์ผ ์‹œ์Šคํ…œ์— ์žˆ๋Š” ๊ฒฝ์šฐ์—๋„ ํœ ์—์„œ build/ ๋””๋ ‰ํ† ๋ฆฌ์˜ ์ถ”๊ฐ€ ํŒŒ์ผ์„ ์ƒ๋žตํ•ฉ๋‹ˆ๋‹ค.

์œ„์˜ ๋ฌธ์ œ๊ฐ€ manylinux ์—๋งŒ ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋นŒ๋“œ ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ABI๋ฅผ ์บก์ฒ˜ํ•˜๊ธฐ์— ์ถฉ๋ถ„ํžˆ ๊ตฌ์ฒด์ ์ด์ง€ ์•Š์„ ๋•Œ๋งˆ๋‹ค ๋ฐœ์ƒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(setuptools์˜ ๊ฒฝ์šฐ ํ”Œ๋žซํผ์œผ๋กœ ํ‘œ์‹œ๋˜๊ณ  python ๋ฒ„์ „์€ ๋นŒ๋“œ ๋””๋ ‰ํ† ๋ฆฌ์˜ ABI ํƒœ๊ทธ์— ์บก์ฒ˜๋œ ๋ชจ๋“  ๊ฒƒ์ž…๋‹ˆ๋‹ค). ๋‚˜๋Š” ์ด๊ฒƒ์ด ํ˜„์žฌ ์ธํ„ฐํ”„๋ฆฌํ„ฐ์—์„œ๋„ ABI๋ฅผ ๋„˜์–ด ํ™•์žฅ๋œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋ญ”๊ฐ€๊ฐ€ NumPy์— ๋Œ€ํ•ด ๋งํฌ๋˜๋Š” ๊ฒฝ์šฐ, ABI๊ฐ€ ์ตœ์‹  ๋ฒ„์ „์—์„œ๋Š” ์ž‘๋™ํ•˜์ง€๋งŒ ์ด์ „ NumPy์—์„œ๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋นŒ๋“œ ๋””๋ ‰ํ† ๋ฆฌ ์ด๋ฆ„์—์„œ ์ธ์ฝ”๋”ฉํ•˜์ง€ ์•Š๋Š” ํ•œ ์ด๊ฒƒ์€ ํšจ๊ณผ๋„ ๊ทธ๋Ÿฐ ์‹์œผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋นŒ๋“œ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ž๋™์œผ๋กœ ์ฒญ์†Œํ•œ๋‹ค๊ณ  ํ•ด์„œ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. (์˜ˆ๋ฅผ ๋“ค์–ด ๋‘ ๊ฐœ์˜ pip wheel ํ˜ธ์ถœ์„ ๋ณ‘๋ ฌ๋กœ ์‹คํ–‰ํ•˜๋ฉด ์—ฌ์ „ํžˆ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ) ์ด๋Ÿฌํ•œ ๋ฐฉ์‹์œผ๋กœ(์ ์–ด๋„ PEP 517 ํ† ๋ก  ์ค‘์—) ์ฆ๋ถ„ ๋นŒ๋“œ์— ๋Œ€ํ•œ ํ˜ธ์ถœ ์‚ฌ์ด์— ์บ์‹ฑ์„ ํ—ˆ์šฉํ•˜์—ฌ ๋” ๋งŽ์€ ์„ฑ๋Šฅ์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. IOW ํ˜„์žฌ ๋™์ž‘์€ ์‹คํ–‰ ์‚ฌ์ด์— ๋นŒ๋“œ ์•„ํ‹ฐํŒฉํŠธ๋ฅผ ์žฌ์‚ฌ์šฉํ•˜์—ฌ ์ผ๋ถ€ ํ•˜์œ„ ์ง‘ํ•ฉ์ด ์›ํ–ˆ๋˜ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ๋นŒ๋“œ ๋ฐฑ์—”๋“œ๊ฐ€ ๋งค์šฐ ์ž˜๋ชป๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํŒจํ‚ค์ง€ ์‚ฌ์šฉ์ž ์ •์˜).

๋ฌผ๋ก  ๊ธฐ๋ณธ setuptools ๋ช…๋ น์— ๋Œ€ํ•œ ์ถฉ๋ถ„ํ•œ ํ”Œ๋ž˜๊ทธ๊ฐ€ ์žˆ์œผ๋ฉด ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค( py setup.py egg_info --egg-base /tmp/foo build --build-base /tmp/foo/build-base bdist_wheel --bdist-dir /tmp/foo/bdist ์™€ ๊ฐ™์€ ๊ฒƒ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค).

๋ฌธ์ œ๋Š” ์ถ”๊ฐ€ ํŒŒ์ผ์ด ์•„๋‹ˆ๋ผ ํœ ๊ณผ ํ˜ธํ™˜๋˜๋Š” ์˜ˆ์ƒ ABI๊ฐ€ ๋ณ€๊ฒฝ๋˜์—ˆ๊ณ  .so ๊ฐ€ ๋‹ค์‹œ ๋นŒ๋“œ๋˜์ง€ ์•Š์•˜๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. SCons๊ฐ€ pymalloc์œผ๋กœ ๋นŒ๋“œ๋œ Python์— ํ•˜๋‚˜์˜ ๋นŒ๋“œ ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜๊ณ  Python์ด ๋‹ค๋ฅธ ๋นŒ๋“œ ๋””๋ ‰ํ† ๋ฆฌ( .so ๋งํฌ๋  ์ˆ˜ ์žˆ๋Š” NumPy ๋ฒ„์ „ ํฌํ•จ)๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๋งŒํผ ๋˜‘๋˜‘ํ•˜๋‹ค๋ฉด ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด์ „์— ๋นŒ๋“œ๋œ ์•„ํ‹ฐํŒฉํŠธ๋ฅผ ๋‹ค๋ฅธ ABI๋กœ ์žฌ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์˜ํ–ฅ์„ ๋ฐ›์Šต๋‹ˆ๋‹ค.

enscons๋ฅผ ํ…Œ์ŠคํŠธํ•˜๋ ค๊ณ  ์‹œ๋„ํ–ˆ์ง€๋งŒ ์˜ค๋ฅ˜ ์—†์ด rsalette๋ฅผ ๋นŒ๋“œํ•  ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

scikit-build๋ฅผ ํ…Œ์ŠคํŠธํ•˜์—ฌ ์ฆ๋ถ„ ๋นŒ๋“œ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ํ™•์ธํ•˜๋ ค๊ณ  ์‹œ๋„ํ–ˆ๋Š”๋ฐ ๋ฌด์—‡์„ ํ•˜๋“  ๋‘ ๋ฒˆ์งธ ๋นŒ๋“œ์—์„œ ์ž์ฒด์ ์œผ๋กœ ํ† ํ–ˆ๊ณ  ๋งค๋ฒˆ _skbuild ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ˆ˜๋™์œผ๋กœ ์‚ญ์ œํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์˜ค๋ฅ˜ ์—†์ด ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

๋ฉ‹์žˆ๋Š”. ์œ ๊ฐ์Šค๋Ÿฝ๊ฒŒ๋„ enscons๋Š” ์—…๋ฐ์ดํŠธ๋˜์—ˆ์ง€๋งŒ rsalette๋Š” ์—…๋ฐ์ดํŠธํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

2020๋…„ 5์›” 6์ผ ์ˆ˜์š”์ผ ์˜คํ›„ 4์‹œ 18๋ถ„์— Donald Stufft๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

enscons๋ฅผ ํ…Œ์ŠคํŠธํ•˜๋ ค๊ณ  ์‹œ๋„ํ–ˆ์ง€๋งŒ ์˜ค๋ฅ˜ ์—†์ด rsalette๋ฅผ ๋นŒ๋“œํ•  ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

scikit-build๋ฅผ ํ…Œ์ŠคํŠธํ•˜์—ฌ ์ฆ๋ถ„ ๋นŒ๋“œ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ํ™•์ธํ•˜๋ ค๊ณ  ์‹œ๋„ํ–ˆ๋Š”๋ฐ ๋ฌด์—‡์„ ํ•˜๋“  ๋‘ ๋ฒˆ์งธ ๋นŒ๋“œ์—์„œ ์ž์ฒด์ ์œผ๋กœ ํ† ํ–ˆ๊ณ  ๋งค๋ฒˆ _skbuild ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ˆ˜๋™์œผ๋กœ ์‚ญ์ œํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์˜ค๋ฅ˜ ์—†์ด ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

โ€”
๋‹น์‹ ์ด ๋Œ“๊ธ€์„ ๋‹ฌ์•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ฑฐ๋‚˜ GitHub https://github.com/pypa/pip/issues/7555#issuecomment-624867490 ์—์„œ ํ™•์ธํ•˜๊ฑฐ๋‚˜ https://github.com/notifications/unsubscribe-auth/AABSZERIEDAPUIXCPAKBBUDRQHAXRANCNFSM4KCV5MHQ ๊ตฌ๋…์„ ์ทจ์†Œ

์œ ๊ฐ์Šค๋Ÿฝ๊ฒŒ๋„ enscons๋Š” ์—…๋ฐ์ดํŠธ๋˜์—ˆ์ง€๋งŒ rsalette๋Š” ์—…๋ฐ์ดํŠธํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

์—…๋ฐ์ดํŠธ๋œ enscons๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ข‹์€ C ext๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? rsalette๊ฐ€ ๋ชฉ๋ก์˜ ์ฒซ ๋ฒˆ์งธ์ด๊ณ  ๋””๋ฒ„๊น…ํ•˜๊ณ  ์‹ถ์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐฉ๊ธˆ rsalette๋ฅผ ์„ ํƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๊ฒƒ์œผ๋กœ ์‹œ๋„ํ•˜๊ฒŒ ๋˜์–ด ๊ธฐ์ฉ๋‹ˆ๋‹ค.

rsalette ์˜ ์œ ์ผํ•œ ๋ฌธ์ œ๋Š” SConstruct์˜ Environment์— ROOT_IS_PURELIB ๋ฅผ ์ „๋‹ฌํ•ด์„œ๋Š” ์•ˆ ๋œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. C ํ™•์žฅ์ž๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. cryptacular ๊ดœ์ฐฎ์•„ ๋ณด์ž…๋‹ˆ๋‹ค.

#8165(์ฝ”๋ฉ˜ํŠธ)

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

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

๋‚˜๋Š” ๋˜ํ•œ ๋˜๋Œ๋ฆฌ๊ธฐ์— ํˆฌํ‘œํ•˜๊ณ  ์ด์— ๋Œ€ํ•œ ํ•ด๊ฒฐ์ฑ…์œผ๋กœ https://discuss.python.org/t/proposal-adding-a-persistent-cache-directory-to-pep-517-hooks/2303/15 ๋ฅผ ์ถ”๊ตฌํ•ฉ๋‹ˆ๋‹ค. ๋ฐฑ์—”๋“œ๊ฐ€ ์ œ์ž๋ฆฌ์— ๋นŒ๋“œ๋˜์ง€ ์•Š๋„๋ก ํ—ˆ์šฉํ•˜๋ฏ€๋กœ ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๊ฐ€ ๋…ธ์ถœ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ฑฐ๊ธฐ์— ์žˆ๋Š” ์ œ์•ˆ์— ๋™์˜ํ•œ๋‹ค๋ฉด ํ•ด๋‹น ์Šค๋ ˆ๋“œ์—๋„ ์ฐธ์—ฌํ•˜์‹ญ์‹œ์˜ค.

์ €์—๊ฒŒ๋„ ๊ทธ๋Ÿด์‹ธํ•ด ๋ณด์ž…๋‹ˆ๋‹ค. ์ธํŠธ๋ฆฌ(๋˜๋Š” sdist์—์„œ ๋นŒ๋“œ) ์ ‘๊ทผ ๋ฐฉ์‹์—๋Š” ๋ช‡ ๊ฐ€์ง€ ๋งค์šฐ ์ค‘์š”ํ•œ ์ด์ ์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ค‘์š”ํ•œ.

์—ฌ๊ธฐ์— UI๊ฐ€ ๋ฌด์—‡์ธ์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(๊ธฐ๋ณธ์ ์œผ๋กœ ์–ด๋–ค ์ ‘๊ทผ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋‚˜์š”? ์–ด๋–ค ์ข…๋ฅ˜์˜ ์˜ต์…˜์„ ์„ ํƒํ•ด์•ผ ํ•˜๋‚˜์š”?). ํ•˜์ง€๋งŒ ํ˜„์žฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋™์•ˆ ๊ฒฐ์ •์„ ๋‚ด๋ฆฌ๋Š” ๊ฒƒ๋ณด๋‹ค ๊ฒฐ์ •ํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„์ด ์กฐ๊ธˆ ๋” ์†Œ์š”๋˜์–ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. .

์•Œ์•˜์–ด! ๋‚˜๋Š” ์ผ๋ฐ˜์ ์ธ ํ•ฉ์˜๊ฐ€ ๋˜๋Œ๋ฆฌ๊ณ  ์žฌํ‰๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•ด PR์„ ์ œ์ถœํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. :)

๊ฑฐ๊ธฐ์— ์žˆ๋Š” ์ œ์•ˆ์— ๋™์˜ํ•œ๋‹ค๋ฉด ํ•ด๋‹น ์Šค๋ ˆ๋“œ์—๋„ ์ฐธ์—ฌํ•˜์‹ญ์‹œ์˜ค.

ํ•ด์ฃผ์„ธ์š” - ์ œ๊ฐ€ ๋Œ“๊ธ€์„ ๋‹ฌ์•˜์ง€๋งŒ ์˜๋ฏธ์žˆ๋Š” ์ œ์•ˆ์„ ํ•˜๊ธฐ์—๋Š” ์ œ๊ฐ€ ์ถฉ๋ถ„ํžˆ ์•Œ์ง€ ๋ชปํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฒฝํ—˜์ด ์žˆ์œผ์‹  ๋ถ„๋“ค์˜ ์˜๊ฒฌ์ด ์†Œ์ค‘ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

https://github.com/pypa/pip/issues/8165#issuecomment -625401463์— ๋ช‡ ๊ฐœ์˜ ํฐ ํ…์ŠคํŠธ๋ฅผ ์‚ญ์ œํ–ˆ์Šต๋‹ˆ๋‹ค. ์˜ค๋Š˜์€ ์ด๋งŒ ๋ฌผ๋Ÿฌ๊ฐ€๊ฒ ์Šต๋‹ˆ๋‹ค... ๋งˆ์ง€๋ง‰์— ๊ฐœ์ธ๋…ธํŠธ๋ฅผ ์“ฐ๋‹ค๋ณด๋‹ˆ ์ข€ ๋‹ต๋‹ตํ•˜๋„ค์š”. #5599์—์„œ ๋๋‚ด๊ณ  ๋ถ€์ •์ ์ธ ์‚ฌ์šฉ์ž ๋Œ“๊ธ€์„ ์ฝ๋Š” ๊ฒƒ์€ ํ™•์‹คํžˆ ๋„์›€์ด ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š” ์—ฌ๋Ÿฌ๋ถ„, ์ €๋Š” ์ด๊ฒƒ์— ๋Œ€ํ•ด ์ข€ ๋” ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์— ์ด โ€‹โ€‹๋ฌธ์ œ์— ๋Œ€ํ•œ ์ €์˜ ํ˜„์žฌ ๊ด€์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ์ œ์ž๋ฆฌ์— sdist๋ฅผ ๋งŒ๋“ค๊ณ  ์ž„์‹œ ์œ„์น˜์— sdist์˜ ์••์ถ•์„ ํ‘ผ ๋‹ค์Œ ๊ทธ ์œ„์น˜์—์„œ ๋นŒ๋“œํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ์—ฌ์ „ํžˆ pip install / pip wheel์ด ๋‚˜์œ sdists๋ฅผ ์žก์œผ๋ ค๊ณ  ์‹œ๋„ํ•˜๊ณ  ์žก์„ ์ˆ˜์žˆ๋Š” ์˜ฌ๋ฐ”๋ฅธ ์žฅ์†Œ๊ฐ€ ์•„๋‹ˆ๋ผ๊ณ  ๋ฏฟ์Šต๋‹ˆ๋‹ค. ์• ์ดˆ์— ๋‚˜์œ sdist๋ฅผ ๋งŒ๋“ค์ง€ ์•Š๋Š” ๊ฒƒ์ด ๋ฐฑ ์—”๋“œ ์ฑ…์ž„์ด ์•„๋‹ˆ์–ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? ๋˜ํ•œ sdist๋ฅผ ํ†ตํ•œ ๋ฌด์กฐ๊ฑด ๋นŒ๋“œ๋Š” ๋นŒ๋“œ๋งŒํผ ํŒŒ๊ดด์ ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

  1. ์ œ์ž๋ฆฌ์— ๋นŒ๋“œํ•˜๋ ค๋ฉด pip ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•˜์‹ญ์‹œ์˜ค.

์†”๋ฃจ์…˜ 4๊ฐ€ ์„ฑ๊ณตํ•˜์ง€ ๋ชปํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‹จ๊ธฐ์ ์œผ๋กœ ๊ฐ€์žฅ ์ข‹์•„ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. pip 20.1.1์— ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ์‹œ๊ธฐ์ƒ์กฐ์ž…๋‹ˆ๊นŒ?

  1. ๋‚ด๋ถ€ ๋นŒ๋“œ์— ๋Œ€ํ•ด "์•ˆ์ „ํ•œ" ๊ฒฝ์šฐ ๋ฐฑ์—”๋“œ๊ฐ€ ํ”„๋ŸฐํŠธ์—”๋“œ์™€ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ์ผ์ข…์˜ ๋ฉ”์ปค๋‹ˆ์ฆ˜์œผ๋กœ PEP 517์„ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

์ด ํ•์„ ์‚ฌ์šฉํ•˜๋ฉด ์—ฌ์ „ํžˆ ๊นจ์ง€๊ณ  ๊ณ ์น  ์ˆ˜ ์—†๋Š” ์นดํ”ผํŠธ๋ฆฌ๋กœ ๋˜๋Œ์•„๊ฐ€์•ผ ํ•˜๋ฏ€๋กœ ๋‚˜๋Š” ์ด๊ฒƒ์„ ์„ ํ˜ธํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

  1. ํ•ญ์ƒ ์ œ์ž๋ฆฌ์— ๋นŒ๋“œํ•˜๋„๋ก pip๋ฅผ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์ด๊ฒƒ์€ ๋„ˆ๋ฌด ํŒŒ๊ดด์ ์ธ ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผ๋˜์–ด 20.1.1์—์„œ ๋˜๋Œ๋ฆด ๊ฒƒ์ž…๋‹ˆ๋‹ค.

  1. ํŠธ๋ฆฌ ์™ธ๋ถ€์—์„œ ๋นŒ๋“œํ•˜๋Š” ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ œ์ž๋ฆฌ์— ๋นŒ๋“œํ•˜๋„๋ก pip๋ฅผ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ์žฅ๊ธฐ์ ์ธ ๋ชฉํ‘œ๊ฐ€ ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์บ์‹œ ๋””๋ ‰ํ† ๋ฆฌ ๊ฐœ๋…๊ณผ ํŠธ๋ฆฌ ์™ธ๋ถ€ ํ˜ผํ•ฉ์„ ๊ตฌ์ถ•ํ•˜๋Š” ์˜ต์…˜์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์ €๋Š” CLI ์˜ต์…˜, ํŠนํžˆ ์ด์™€ ๊ฐ™์€ ์˜ต์…˜์„ ์ข‹์•„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‚ด ๋กœ์ปฌ FS์— ์žˆ๋Š” ๋‘ ๊ฐœ์˜ ํŒจํ‚ค์ง€๋ฅผ ๋‚˜์—ดํ•˜๊ณ  ํ•˜๋‚˜๋Š” ์ œ์ž๋ฆฌ์— ๋นŒ๋“œํ•˜๊ณ  ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” ๋นŒ๋“œํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ์–ด๋–ป๊ฒŒ ํ•ฉ๋‹ˆ๊นŒ? ๋‘˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์˜ต์…˜์„ ์ œ๊ณตํ•˜๋ฉด ๋‘˜ ์ค‘ ํ•˜๋‚˜๋กœ๋งŒ ๋นŒ๋“œํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ์กด ํŒจํ‚ค์ง€๊ฐ€ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์€ ๋˜ํ•œ ํ”„๋กœ์ ํŠธ๊ฐ€ ๊ฒฐ์ •์„ ๋‚ด๋ฆด ์ˆ˜ ์—†์—ˆ๊ณ  ๊ทธ ๊ฒฐ์ •์„ ์ตœ์ข… ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ฏธ๋ฃจ๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์™„์ „ํžˆ ์กด์žฌํ•˜๋Š” ์ผ์ข…์˜ ์˜ต์…˜๊ณผ ๊ฐ™์€ ๋ƒ„์ƒˆ๊ฐ€ ๋‚ฉ๋‹ˆ๋‹ค.

sdist๋ฅผ ํ†ตํ•œ ๋นŒ๋“œ๋Š” ์ •ํ™•ํžˆ ๋‚˜์œ sdist๋ฅผ ์žก๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ํ”„๋กœ์ ํŠธ๊ฐ€ ์„ค์น˜๋ฅผ ๋๋‚ด๊ธฐ ์ „์— ํ†ต๊ณผํ•  ์ˆ˜ ์žˆ๋Š” "๊ฒฝ๋กœ"์˜ ๊ฐ€๋Šฅํ•œ ๋ณ€ํ˜•์„ ์ค„์ด๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์–ด๋–ค ์‹์œผ๋กœ๋“  ํ”Œ๋ž˜๊ทธ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ๋” ์•…ํ™”๋˜์ง€ ์•Š๊ณ  ์•…ํ™”๋ฉ๋‹ˆ๋‹ค.

๋‚ด ๋ง์€ ์„ค์น˜๊ฐ€ ํ†ต๊ณผํ•  ์ˆ˜ ์žˆ๋Š” ๋ช‡ ๊ฐ€์ง€ "๊ฒฝ๋กœ"๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

  1. VCS -> Sdist -> ํœ  -> ์„ค์น˜๋จ
  2. VCS -> ํœ  -> ์„ค์น˜๋จ
  3. VCS -> ์„ค์น˜๋จ(๋ ˆ๊ฑฐ์‹œ)

๋‹จ๊ณ„์ ์œผ๋กœ ์ œ๊ฑฐ๋˜๋Š” ๋ช‡ ๊ฐ€์ง€ ์ถ”๊ฐ€ ๊ฒฝ๋กœ๊ฐ€ ์žˆ์ง€๋งŒ ์ผ๋ฐ˜์ ์œผ๋กœ 3๊ฐœ์ž…๋‹ˆ๋‹ค(์ด์ƒ์ ์œผ๋กœ๋Š” 3๊ฐœ๋„ ๋‹จ๊ณ„์ ์œผ๋กœ ์ œ๊ฑฐ๋จ). ํŽธ์ง‘ ๊ฐ€๋Šฅํ•œ ์„ค์น˜๋„ ์žˆ์ง€๋งŒ ๊ณง ์‚ฌ๋ผ์ง€์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

sdist ๋˜๋Š” ํœ ์ด PyPI์— ์—…๋กœ๋“œ๋˜๊ณ  ๋™์ผํ•œ "๊ฒฝ๋กœ"์˜ ์ผ๋ถ€๊ฐ€ ๋  ๋•Œ๊นŒ์ง€ ์„ค์น˜๋˜๋Š” ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ์‹œ ์ค‘์ง€ํ•˜๊ณ  ๋‹ค๋ฅธ ์ปดํ“จํ„ฐ์—์„œ ์™„๋ฃŒํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์ด์™€ ๊ฐ™์€ ์—ฌ๋Ÿฌ "๊ฒฝ๋กœ"๊ฐ€ ์žˆ๋Š” ๋ฌธ์ œ๋Š” ์ตœ์ข… ์„ค์น˜ ๊ฒฐ๊ณผ์— ๋ถˆ์ผ์น˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•ญ์ƒ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ์ง€๋งŒ ์ž์ฃผ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์€ ์‰ฝ๊ฒŒ ๊ด€์ฐฐํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค. ์ข…์ข… ์ด๋Ÿฌํ•œ ๋ถˆ์ผ์น˜๋Š” ํฐ ๋ฌธ์ œ๊ฐ€ ์•„๋‹ˆ์ง€๋งŒ ๋•Œ๋กœ๋Š” ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค.

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

์ถ”๊ฐ€ ์ด์ ์œผ๋กœ, ์ด๊ฒƒ์€ ํ–‰๋ณตํ•œ ๊ฒฝ๋กœ๊ฐ€ ํ–‰๋ณตํ•˜๊ฒŒ ์œ ์ง€๋˜๋„๋ก ํ•˜๋Š” ๊ฐ•์ œ ๊ธฐ๋Šฅ์œผ๋กœ ์ž‘์šฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๋Œ€๋ถ€๋ถ„ @dstufft ์— ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ํŠนํžˆ sdist์—์„œ ๋นŒ๋“œ ์ ‘๊ทผ ๋ฐฉ์‹์ด "sdist๋ฅผ ๊ฒ€์ฆํ•˜๋ ค๋Š” ์‹œ๋„"๊ฐ€ ์•„๋‹ˆ๋ผ "๋ชจ๋“  ๊ฒƒ์ด "์†Œ์Šค ํŠธ๋ฆฌ -> sdist -> ํœ  -> ์„ค์น˜ ๊ฒฝ๋กœ๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค. (์ผ๋ถ€ ์ดˆ๊ธฐ ๋‹จ๊ณ„๋ฅผ ๊ฑด๋„ˆ๋›ฐ๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์Œ)".

๊ทธ๋Ÿฌ๋‚˜ ํ•œ ๊ฐ€์ง€ ์ ์„ ์ง€์ ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

๋‚ด ๋กœ์ปฌ FS์— ์žˆ๋Š” ๋‘ ๊ฐœ์˜ ํŒจํ‚ค์ง€๋ฅผ ๋‚˜์—ดํ•˜๊ณ  ํ•˜๋‚˜๋Š” ์ œ์ž๋ฆฌ์— ๋นŒ๋“œํ•˜๊ณ  ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” ๋นŒ๋“œํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ์–ด๋–ป๊ฒŒ ํ•ฉ๋‹ˆ๊นŒ?

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

(๋งŒ์•ฝ) ๋˜๋Œ๋ฆด ๋•Œ ํŠธ๋ฆฌ ๋‚ด ๋นŒ๋“œ๋ฅผ ๊ตฌํ˜„ํ•œ ๊ฒฐ๊ณผ ๋‹ซํ˜€ ์žˆ๋˜ #6276๊ณผ ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ๋‹ค์‹œ ์—ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

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

์ƒˆ๋กœ์šด ๋ฆฌ์กธ๋ฒ„๊ฐ€ ์ด๋ฏธ ์„ค์น˜๋œ ๊ฒƒ์„ ๊ณ ๋ คํ•œ๋‹ค๋ฉด pip install foo bar ์™€ pip install foo && pip install bar ๋Š” ๊ฑฐ์˜ ๊ฐ™์„ ๊ฒƒ์ด๊ณ  ์ „ํ˜€ ์ค‘์š”ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‘ ํ”„๋กœ์ ํŠธ๊ฐ€ ๋ชจ๋‘ "์ŠคํŒธ"์— ์˜์กดํ–ˆ์ง€๋งŒ foo๊ฐ€ < 2์ด๊ณ  bar๊ฐ€ > 1์ด๋ฉด ์ž˜๋ชป๋œ ์„ค์น˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์€ ์ ‘์„ ์ž…๋‹ˆ๋‹ค :)

(์ƒˆ๋กœ์šด ๋ฆฌ์กธ๋ฒ„ ์ž‘์—…์ด ๋ณ€๊ฒฝ๋˜๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ?)

#7744์—์„œ ์ž…๋ ฅ์„ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค. :)

  1. ํ•ญ์ƒ ์ œ์ž๋ฆฌ์— ๋นŒ๋“œํ•˜๋„๋ก pip๋ฅผ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์ด๊ฒƒ์€ ๋„ˆ๋ฌด ํŒŒ๊ดด์ ์ธ ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผ๋˜์–ด 20.1.1์—์„œ ๋˜๋Œ๋ฆด ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ถ„๋ช…ํžˆ ๋งํ•ด์„œ, ์šฐ๋ฆฌ๋Š” "๋„ˆ๋ฌด ๋นจ๋ฆฌ ์ถœ์‹œ"ํ–ˆ๊ณ  ์šฐ๋ฆฌ๊ฐ€ ์ทจํ•œ ์ถœ์‹œ ์ ‘๊ทผ ๋ฐฉ์‹์€ ์ด๊ฒƒ์ด ๊ฒฐ๊ตญ ๋„ˆ๋ฌด ํŒŒ๊ดด์ ์ธ ์ด์œ ์˜ ์ผ๋ถ€์ž…๋‹ˆ๋‹ค.

  1. ์ œ์ž๋ฆฌ์— ๋นŒ๋“œํ•˜๋ ค๋ฉด pip ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•˜์‹ญ์‹œ์˜ค.

@dstufft @pfmoore ์ €๋Š” ๊ทธ๋Ÿฐ ์ข…๋ฅ˜์˜ ์˜ต์…˜์„ ์˜ตํŠธ์ธ ๋ฉ”์ปค๋‹ˆ์ฆ˜์œผ๋กœ ๋ณด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์‚ฌ์šฉ์ž๊ฐ€ ์–ด๋Š ์‹œ์ ์—์„œ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ์ธํ”Œ๋ ˆ ์ด์Šค ๋นŒ๋“œ๋กœ ์ ์ง„์ ์œผ๋กœ ๋„› ์ง€๋ฅผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์˜๊ฒฌ์˜ ์ •์‹ : https://github.com/pypa/pip/issues/8165#issuecomment -625501216

์ด์— ๋Œ€ํ•ด PR์„ ์ œ์ถœํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. :)

8221์ž…๋‹ˆ๋‹ค.

๋˜๋Œ๋ฆฐ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ํฌํ•จ๋œ 20.1.1์ด ๋ฆด๋ฆฌ์Šค๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

Fedora์—์„œ Python RPM ํŒจํ‚ค์ง€๋ฅผ ๋นŒ๋“œํ•  ๋•Œ ์šฐ๋ฆฌ๋Š” ๊ณต๋ฃก์ด๋ฉฐ ์”ฌ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ํ‘œ์ค€ ๋ฐฉ๋ฒ•์€ python setup.py build ์ž…๋‹ˆ๋‹ค. PEP 517์—์„œ๋Š” pip wheel ๋Œ€์‹  ์‚ฌ์šฉํ•˜๋Š” "์ž„์‹œ" ๋ฐฉ๋ฒ•์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ™•์žฅ ๋ชจ๋“ˆ์˜ ๊ฒฝ์šฐ pip๊ฐ€ ๋นŒ๋“œ์— ์‚ฌ์šฉํ•˜๋Š” "์†Œ์Šค๋ฅผ tmp๋กœ ์ด๋™ํ•˜๊ณ  ๊ฑฐ๊ธฐ์—์„œ ๋นŒ๋“œ" ์ ‘๊ทผ ๋ฐฉ์‹์— ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๋นŒ๋“œ ๊ธฐ๊ณ„๋Š” ์ผ๋ถ€ ์ปดํŒŒ์ผ๋Ÿฌ ํ”Œ๋ž˜๊ทธ๋ฅผ ์ฃผ์ž…ํ•˜๋ฏ€๋กœ ๋นŒ๋“œ ์•„ํ‹ฐํŒฉํŠธ(์ด ๊ฒฝ์šฐ .so ํ™•์žฅ ๋ชจ๋“ˆ)์— ์†Œ์Šค์— ๋Œ€ํ•œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ๋‚˜์ค‘์— ๋นŒ๋“œ ์•„ํ‹ฐํŒฉํŠธ๋ฅผ ํƒ์ƒ‰ํ•˜๊ณ  ์ด ์ •๋ณด๋ฅผ ์ถ”์ถœํ•˜๊ณ  ์†Œ์Šค๋ฅผ /usr/src/debug ์— ๋ณต์‚ฌํ•˜์—ฌ ํŠน์ˆ˜ *-debugsource RPM์„ ํ†ตํ•ด ์„ค์น˜ํ•˜๋Š” ์‰˜ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. mahcinery๋Š” ๋ชจ๋“  ๊ฒƒ์ด ์ž‘์—… ํŠธ๋ฆฌ ๋‚ด์—์„œ ๊ตฌ์ถ•๋˜๊ธฐ๋ฅผ ๊ธฐ๋Œ€ํ•˜๋ฉฐ ์™ธ๋ถ€์—์„œ ๊ตฌ์ถ•ํ•  ๋•Œ๋Š” ์‹ค์ œ๋กœ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ์šฐ๋ฆฌ ์ธก์—์„œ ๋ฌธ์ œ๋ฅผ ์™„ํ™”ํ•˜๊ธฐ ์œ„ํ•ด (ํ•จ๊ป˜) ํ•  ์ˆ˜ ์žˆ๋Š” ์ผ์ž…๋‹ˆ๋‹ค.

1. set the `$TMPDIR` environment variable to have it within the place where the RPM script expects it (i.e. `export TMPDIR=%{_builddir}/.tmp` (and create it))

2. use `pip wheel` with the `--no-clean` option to keep the copied sources in `$TMPDIR`

3. run some shell kung fu to rewrite the "what is my source" information to the correct location: `find %{buildroot} -iname '*.so' -print0 | xargs --no-run-if-empty -0 -n1 /usr/lib/rpm/debugedit -b "%{_builddir}/.tmp/pip-req-build-"* -d "$PWD"`

4. (Optional: clean `$TMPDIR` manually.)

์ด๊ฒƒ์€ pip ํ†ตํ•ฉ, #6505 ๋“ฑ์„ ๋ณผ ๋•Œ ํšจ๊ณผ์ ์œผ๋กœ ์‹œ์ž‘ํ•œ ๊ฒฝ๋กœ์ž…๋‹ˆ๋‹ค.

pip๋ฅผ ์‚ฌ์šฉํ•œ ๋ฐ˜๋ณต ๋นŒ๋“œ๋Š” ์˜ค๋Š˜๋‚  ํšจ๊ณผ์ ์œผ๋กœ ์†์ƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” C ํ™•์žฅ ํ˜•์‹์˜ ๋งŽ์€ ์–‘์˜ python ์ฝ”๋“œ๊ฐ€ ์žˆ๋Š” ๊ทธ๋ฃน์— ํฐ ์†์‹ค์ด๋ฏ€๋กœ setup.py ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋นŒ๋“œ๋ฅผ ํ˜ธ์ถœํ–ˆ์Šต๋‹ˆ๋‹ค.

pip ํ•„์š” build ๋ช…๋ น์˜ ์ตœ์ข… ๊ฒฐ๊ณผ build ๊ฐ™์€ ๋‹ค๋ฅธ ํ•˜์œ„ ๋ช…๋ น์— ๋”ฐ๋ผ ๋ฌด๋‚œ๋˜์–ด์•ผ ๋ช…๋ น wheel , install , ๋“ฑ.

์ง€๊ธˆ pip ๋Š” install ๋ฅผ build ๋ฐ install pip ํšจ๊ณผ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋ฐ”์ด๋„ˆ๋ฆฌ ์•„ํ‹ฐํŒฉํŠธ๋ฅผ ๋นŒ๋“œํ•˜๊ณ  ์บ์‹ฑํ•˜๊ณ  ์ฝ๊ธฐ๋ณด๋‹ค ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ์„ค์น˜ํ•˜๋Š” ์ผ๋ถ€ ์‚ฌ๋žŒ๋“ค์ด ์›ํ•˜๋Š” _์•„๋‹Œ_์ž…๋‹ˆ๋‹ค. - ์ „์šฉ ๋งˆ์šดํŠธ ๋“ฑ

๋‚œ ์ •๋ง ์‚ฌ์šฉํ•  ์ˆ˜์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์—ˆ์œผ๋ฉด ์ข‹๊ฒ ์–ด setup.py ํ•œ ํ›„, ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ๊ตฌ์ถ•ํ•˜๊ธฐ pip install ์ƒ์„ฑ์— ์˜์ง€์—†์ด bdist ,ํ•˜์ง€๋งŒ ์˜ค๋Š˜์€ ๊ฐ€๋Šฅํ•˜์ง€ ์•Š๋Š” ๊ฒƒ , pip ๋ฐ distutils / setuptools ๋ฐ”์ด๋„ˆ๋ฆฌ ์•„ํ‹ฐํŒฉํŠธ๋ฅผ ์ฐพ์„ ์œ„์น˜์— ๋™์˜ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—.

setup.py๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ๋นŒ๋“œํ•œ ๋‹ค์Œ bdist๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š๊ณ  pip ์„ค์น˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์—ˆ์œผ๋ฉด ์ข‹๊ฒ ์ง€๋งŒ, pip ๋ฐ distutils/setuptools๊ฐ€ ๋™์˜ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋Š˜๋‚ ์—๋Š” ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋ฐ”์ด๋„ˆ๋ฆฌ ์•„ํ‹ฐํŒฉํŠธ๋ฅผ ์ฐพ๋Š” ๊ณณ.

๋‚˜๋Š” ๋‚ด๊ฐ€ ๋”ฐ๋ฅด๊ณ  ์žˆ๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์€ ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์›ํ•˜์ง€๋งŒ ์ด๋ฏธ ์กด์žฌํ•˜๋Š” ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ฐฐํฌ ํ˜•์‹์„ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์ง€ ์•Š๋‹ค๊ณ  ๋งํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์™œ ๊ทธ๋Ÿฐ ๊ฒ๋‹ˆ๊นŒ?

setup.py๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ๋นŒ๋“œํ•œ ๋‹ค์Œ bdist๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š๊ณ  pip ์„ค์น˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์—ˆ์œผ๋ฉด ์ข‹๊ฒ ์ง€๋งŒ, pip ๋ฐ distutils/setuptools๊ฐ€ ๋™์˜ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋Š˜๋‚ ์—๋Š” ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋ฐ”์ด๋„ˆ๋ฆฌ ์•„ํ‹ฐํŒฉํŠธ๋ฅผ ์ฐพ๋Š” ๊ณณ.

๋‚˜๋Š” ๋‚ด๊ฐ€ ๋”ฐ๋ฅด๊ณ  ์žˆ๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์€ ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์›ํ•˜์ง€๋งŒ ์ด๋ฏธ ์กด์žฌํ•˜๋Š” ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ฐฐํฌ ํ˜•์‹์„ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์ง€ ์•Š๋‹ค๊ณ  ๋งํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์™œ ๊ทธ๋Ÿฐ ๊ฒ๋‹ˆ๊นŒ?

bdist ํ˜•์‹์€ ๋งค์šฐ ์ œํ•œ์ ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ ๊ทธ๋ฃน์€ tar์™€ ๊ฐ™์€ ๋ฉ์ฒญํ•œ ํ˜•์‹์— ์˜์กดํ•˜๊ณ  ๊ทธ๋Œ€๋กœ ์••์ถ•์„ ํ’€์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(BSD๋Š” ์ง€์›๋˜์ง€ ์•Š์œผ๋ฉฐ ๋ฐ๋น„์•ˆ์€ ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋“ฑ).

๋‚ด๊ฐ€ ์–ด์ ฏ๋ฐค ๋ฐœ๊ฒฌํ•œ ๊ฒƒ์€ ๋ฉ์ฒญํ•œ bdist๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด pip ๋ฅผ ํ†ตํ•ด ์„ค์น˜ํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฉ์ฒญํ•œ ๋ฐ”์ด๋„ˆ๋ฆฌ์—๋Š” pip , AFAICT๋ฅผ ํ†ตํ•ด ์„ค์น˜ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๊ฐ€ ๋ถ€์กฑํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ pip ๋ฐ”ํ€ด๊ฐ€ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๊ณ„๋ž€๊ณผ zip๋„ ์‹œ๋„ํ–ˆ์ง€๋งŒ file:// URI๋งŒ ์‚ฌ์šฉํ•˜์—ฌ ์„ค์น˜ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๊ฐ€ ๋ถ€์กฑํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” distutils, setuptools๋ฅผ ํ†ตํ•ด make๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋” ํฐ ๋นŒ๋“œ ์‹œ์Šคํ…œ์œผ๋กœ ๋นŒ๋“œ๋ฅผ ๊ตฌ๋ถ€๋ฆฌ๋ ค๊ณ  ์• ์ผ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ํ‘œ์ค€ bdist ํ˜ธ์ถœ์ด ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

https://github.com/pypa/pip/issues/2195#issuecomment -664728481 ์ €๋Š” --use-feature=in-tree-build ๋’ค์— #7882๋ฅผ ๋‹ค์‹œ ํ•˜๊ฒŒ ๋˜์–ด ๊ธฐ์ฉ๋‹ˆ๋‹ค.

๋งŒ์„ธ! ๊ณ„ํš ๊ฐ™์€ ์†Œ๋ฆฌ!

์ด๋ฒˆ์—๋Š” --build ์˜ ๋…์ŠคํŠธ๋ง๋„ ์—…๋ฐ์ดํŠธํ•ฉ์‹œ๋‹ค. ;)

#2195(๋Œ“๊ธ€)์—์„œ ๊ฐ€์ ธ์˜จ --use-feature=in-tree-build ๋’ค์—์„œ #7882๋ฅผ ๋‹ค์‹œ ์ˆ˜ํ–‰ํ•˜๊ฒŒ ๋˜์–ด ๋งค์šฐ ๊ธฐ์ฉ๋‹ˆ๋‹ค.

pyproject.toml in-tree-build ์˜ต์…˜์„ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ํ•ฉ๋ฆฌ์ ์ผ ์ˆ˜ ์žˆ๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ pip๋ฅผ ๋ž˜ํ•‘ํ•˜๊ธฐ ์œ„ํ•ด bash ์Šคํฌ๋ฆฝํŠธ๋‚˜ makefile์„ ๋งŒ๋“ค ํ•„์š” ์—†์ด #6276์„ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ์•„์ฃผ ์ข‹์Šต๋‹ˆ๋‹ค. (๊ทธ๊ฒŒ ํŠน๋ณ„ํžˆ ํฐ ๋ฌธ์ œ๋Š” ์•„๋‹™๋‹ˆ๋‹ค.)

pyproject.toml์— ํŠธ๋ฆฌ ๋‚ด ๋นŒ๋“œ ์˜ต์…˜์ด ์„ค์ •๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

@davidhewitt ์ด๊ฒƒ์€ ์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ์›๋ž˜ ์„ค๋ช…์—์„œ ๋‹ค์†Œ๊ฐ„ ์˜ต์…˜ 3์ž…๋‹ˆ๋‹ค. ๊ฐ€๋Šฅํ•œ ํ•œ ์ถ”๊ฐ€ ์˜ต์…˜์„ ํ”ผํ•˜๋Š” ๊ฒƒ์ด ๋” ๋‚ซ๋‹ค๋Š” ํ˜„์žฌ์˜ ํ•ฉ์˜๊ฐ€ ์žˆ๋Š” ๊ฒƒ์œผ๋กœ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ „ํ™˜ ๊ธฐ๊ฐ„ ๋™์•ˆ --use-feature ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŠธ๋ฆฌ ๋‚ด ๋นŒ๋“œ๋ฅผ ํ™œ์„ฑํ™”ํ•˜๊ณ  ์ด๋ฅผ ๊ธฐ๋ณธ ๋ฐ ์œ ์ผํ•œ ๋ฉ”์ปค๋‹ˆ์ฆ˜์œผ๋กœ ๋งŒ๋“œ๋Š” ์žฅ๊ธฐ์ ์ธ ๋ชฉํ‘œ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

BTW, ๋‚˜๋Š” ์ด๊ฒƒ์„ 20.3์— ์ œ๋•Œ์— ๊ตฌํ˜„ํ•  ์ˆ˜ ์—†์ง€๋งŒ, 20.4์—์„œ ํฌ๋ง์ ์œผ๋กœ๋Š” ์—ฌ์ „ํžˆ ํ•  ์˜ํ–ฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

@sbidoul ์ด ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” ํŒจ์น˜๋ฅผ ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. #9091 ์ฐธ์กฐ.

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