<p>๋””๋ ‰ํ† ๋ฆฌ์˜ pip ์„ค์น˜๊ฐ€ ๋งค์šฐ ๋Š๋ฆฝ๋‹ˆ๋‹ค.</p>

์— ๋งŒ๋“  2014๋…„ 12์›” 16์ผ  ยท  74์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: pypa/pip

์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ์š”์•ฝ์€ https://github.com/pypa/pip/issues/2195#issuecomment -524606986์„ ์ฐธ์กฐ


๋ชจ๋“  ๊ฒƒ์ด ๊ณต๊ธ‰๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ข…์†์„ฑ์ด ์—†๋Š” pip์— ๋Œ€ํ•ด NFS์— ์—†๋Š”(์‚ฌ์‹ค SSD ๋“œ๋ผ์ด๋ธŒ์— ์žˆ๋Š”) ๋กœ์ปฌ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ pip๊ฐ€ 17์ดˆ๊ฐ€ ํ•„์š”ํ•œ ์ด์œ ๊ฐ€ ์˜์‹ฌ์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค.

$ time pip install --no-install ~/dev/git-repos/pip
DEPRECATION: --no-install and --no-download are deprecated. See https://github.com/pypa/pip/issues/906.
Processing /Users/marca/dev/git-repos/pip
  Requirement already satisfied (use --upgrade to upgrade): pip==6.0.dev1 from file:///Users/marca/dev/git-repos/pip in /Users/marca/dev/git-repos/pip
pip install --no-install ~/dev/git-repos/pip  2.80s user 5.86s system 50% cpu 17.205 total

์•„๋งˆ๋„ ์ ์–ด๋„ ๊ทธ๋ ‡๊ฒŒ ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ๊ฒƒ์€ ๋ฌด์—‡์ด๋“  ๊ธฐ๋กํ•ด์•ผ ํ•˜์ง€๋งŒ, ํ•˜๊ณ  ์žˆ๋Š” ์ผ์„ ํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

"Processing" ๋ผ์ธ์ด ์ฆ‰์‹œ ๋‚˜ํƒ€๋‚˜๊ณ  ๊ทธ ๋ผ์ธ๊ณผ ๋‹ค์Œ ๋ผ์ธ ์‚ฌ์ด์— ๊ฑฐ์˜ ์ „์ฒด ์ง€์—ฐ์ด ์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค.

needs discussion enhancement

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

PEP 517์„ ๊ตฌํ˜„ํ•˜๋ฉด ์ด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋ฉ๋‹ˆ๋‹ค.

ํ•ด์„ค์ž: ๊ทธ๋ ‡์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

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

.git ํฌํ•จํ•˜์—ฌ ์ „์ฒด ๋””๋ ‰ํ† ๋ฆฌ์˜ ๋ณต์‚ฌ๋ณธ์„ ๋งŒ๋“ค๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋งˆ ๊ทธ๋ ‡๊ฒŒ ํ•ด์„œ๋Š” ์•ˆ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

$ du -sh pip
263M    pip
$ du -sk * .cache .git .tox .travis | sort -nr | head -n 5
181860  .tox
34836   tests
31700   .git
9212    pip
2852    build

3 -v ์˜ ( time pip install -vvv --no-install ~/dev/git-repos/pip ) ์ „๋‹ฌ์„ ์‹œ๋„ํ–ˆ์ง€๋งŒ ๋” ์ด์ƒ ์ •๋ณด๋ฅผ ์–ป์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.

pdb๋กœ ์Šคํ…Œํ•‘ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์†๋„๊ฐ€ ๋Š๋ ค์ง‘๋‹ˆ๋‹ค.

> /Users/marca/dev/git-repos/pip/pip/req/req_set.py(365)prepare_files()
-> unpack_url(

๊ทธ๋ฆฌ๊ณ  ์˜ˆ, @tomprince ๊ฐ€ ๋งž์Šต๋‹ˆ๋‹ค. ์ „์ฒด ํŠธ๋ฆฌ๋ฅผ ๋ณต์‚ฌํ•  ๋•Œ ์†๋„๊ฐ€ ๋Š๋ ค์ง‘๋‹ˆ๋‹ค.

> /Users/marca/dev/git-repos/pip/pip/download.py(635)unpack_file_url()
-> shutil.copytree(link_path, location, symlinks=True)
$ time pip install --no-install ~/dev/git-repos/pip
DEPRECATION: --no-install and --no-download are deprecated. See https://github.com/pypa/pip/issues/906.
Processing /Users/marca/dev/git-repos/pip
  2014-12-15 15:23:34.630794: Copying tree; link_path = '/Users/marca/dev/git-repos/pip'; location = '/var/folders/gw/w0clrs515zx9x_55zgtpv4mm0000gp/T/pip-D6etc4-build'
  2014-12-15 15:23:57.418679: DONE copying tree; link_path = '/Users/marca/dev/git-repos/pip'; location = '/var/folders/gw/w0clrs515zx9x_55zgtpv4mm0000gp/T/pip-D6etc4-build'
  Requirement already satisfied (use --upgrade to upgrade): pip==6.0.dev1 from file:///Users/marca/dev/git-repos/pip in /Users/marca/dev/git-repos/pip
pip install --no-install ~/dev/git-repos/pip  2.75s user 5.03s system 32% cpu 24.168 total
>>> elapsed time 24s

https://github.com/pypa/pip/issues/2196์˜ ์ผ๋ถ€ ํ† ๋ก 

https://github.com/pypa/pip/pull/2196 ์ด ๋ณ‘ํ•ฉ๋˜์–ด ํ›จ์”ฌ ๋นจ๋ผ์กŒ์Šต๋‹ˆ๋‹ค.

#2196์ด ๋ณต๊ตฌ๋˜์—ˆ์œผ๋ฏ€๋กœ ๋‹ค์‹œ ์—ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ณต์‚ฌํ•  ๋Œ€์ƒ์„ ํŒŒ์•…ํ•˜๊ธฐ ์œ„ํ•ด ๋ฐœ๊ฒฌ์  ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€์‹  sdist๋ฅผ ๋นŒ๋“œํ•˜๋Š” ๋Œ€์ฒด PR์„ ์ œ๊ณตํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ํ•ด๋‹น PR์˜ ์ฃผ์„์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

$ time pip install --no-install ~/dev/git-repos/pip
DEPRECATION: --no-install and --no-download are deprecated. See https://github.com/pypa/pip/issues/906.
Processing /Users/marca/dev/git-repos/pip
  Requirement already satisfied (use --upgrade to upgrade): pip==6.1.0.dev0 from file:///Users/marca/dev/git-repos/pip in /Users/marca/dev/git-repos/pip
pip install --no-install ~/dev/git-repos/pip  3.67s user 8.12s system 7% cpu 2:45.83 total
>>> elapsed time 2m46s

์˜ˆ, ๊ฑฐ์˜ 3๋ถ„์ž…๋‹ˆ๋‹ค.

์•„๋งˆ๋„ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ด์œ  ๋•Œ๋ฌธ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

$ du -sh .tox
177M    .tox

.tox ๋””๋ ‰ํ† ๋ฆฌ๋Š” ์ „์ฒด pip ๋””๋ ‰ํ† ๋ฆฌ์— ๋Œ€ํ•œ ์ด .tox ์ฒœ๋งŒ ์ค‘ pip ์ž…๋‹ˆ๋‹ค.

https://github.com/pypa/pip/pull/2535 ๋ฅผ ์ฐธ์กฐ unpack_file_url ์†๋„๊ฐ€ ๋นจ๋ผ์ง‘๋‹ˆ๋‹ค.

๋ณ‘ํ•ฉ๋œ PR์ด ์•„๋ฌด ์ž‘์—…๋„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด ๋ฌธ์ œ๋ฅผ ๋‹ค์‹œ ์—ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(gh-3219 ์ฐธ์กฐ).

์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ์ง„์ „์ด ์žˆ์Šต๋‹ˆ๊นŒ?

์•„๋‹ˆ์š”. ์ตœ์ข… ์†”๋ฃจ์…˜์ด ๊ณง ๋„์ฐฉํ•  ๊ฒƒ ๊ฐ™์ง€ ์•Š์Šต๋‹ˆ๋‹ค. PEP 516 ๋˜๋Š” PEP 517์€ ๋จผ์ € sdist ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ด ์˜ฌ๋ฐ”๋ฅธ์ง€ ์—ฌ๋ถ€์— ๋Œ€ํ•œ ๊ฒฐ์ •์„ ๋‚ด๋ฆฌ๊ธฐ ์ „์— ์ˆ˜๋ฝํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(์ €๋Š” ๊ฐœ์ธ์ ์œผ๋กœ ๊ทธ๋ ‡๊ฒŒ ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค).

PEP 516์€ ์ด๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์š”์•ฝํ•ฉ๋‹ˆ๋‹ค.

Being able to create new sdists from existing source trees isn't a thing pip does today,
and while there is a PR to do that as part of building from source, it is contentious and
lacks consensus.

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

npm์˜ ๋ฒ ์–ด ๋ฆฌํฌ์ง€ํ† ๋ฆฌ(์†Œ์Šค ๋ฐฐํฌ ๋Œ€์‹  ๋˜๋Š” ๊ฒŒ์‹œ๋œ ํŒจํ‚ค์ง€๋ผ๊ณ  ๋งํ•ด์•ผ ํ•จ)์—์„œ ์„ค์น˜ํ•  ๋•Œ ์ˆ˜ํ–‰ํ•  ์ž‘์—…๊ณผ ์œ ์‚ฌํ•œ ๋ฌธ์ œ โ€“ git url ํŒจํ‚ค์ง€์— ๋Œ€ํ•ด prepublish ์‹คํ–‰

@rgommers .git ๋ฐ .tox ์™€ ๊ฐ™์€ ์ผ๋ถ€ ํŒŒ์ผ/๋””๋ ‰ํ† ๋ฆฌ ์ด๋ฆ„์„ ํ•˜๋“œ์ฝ”๋”ฉํ•˜๋Š” ๋Œ€์‹  .gitignore ์™€ ๊ฐ™์ด ๋ฌด์‹œํ•  ํŒŒ์ผ ๋ฐ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋‚˜์—ดํ•˜๊ธฐ ์œ„ํ•ด .pipignore ํŒŒ์ผ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์€ ์–ด๋–ป .tox ?

๊ทธ๊ฒƒ์€ ์ข‹์€ ์ƒ๊ฐ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋ชจ๋“  ํŒจํ‚ค์ง€์˜ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ์ด ๋Š๋ฆผ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ์ฑ…์ž„์„ ์˜ฎ๊ธฐ๋Š”๋ฐ, ์ด๊ฒƒ์€ ๋‹จ์ง€ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

npm์ด ์žˆ์œผ๋ฉด ์ข‹์€ ๊ฒƒ์ž…๋‹ˆ๋‹ค :) โ€“ https://docs.npmjs.com/misc/developers#keeping -files-out-of-your-package

์ด๊ฒƒ์€ ๋˜ํ•œ setuptools_scm์™€ ๊ฐ™์€ ๊ฒƒ๋“ค์„ ํ›จ์”ฌ ๋” ์ ๊ทน์ ์œผ๋กœ ์ค‘๋‹จ์‹œํ‚ต๋‹ˆ๋‹ค ^^ - pip install ํด๋” ๋ณต์‚ฌ๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์€ ์ด๋ฏธ ์–ด๋ ค์šด ์ผ์„ ์ค‘๋‹จ์‹œํ‚ต๋‹ˆ๋‹ค.

setuptools_scm์™€ ์–ด๋–ค ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์–ด๋–ค ์ข…๋ฅ˜์˜ ์†Œ์Šค ํŒจํ‚ค์ง€๋„ ์•„๋‹Œ ์œ ํšจํ•œ ์ €์žฅ์†Œ์—์„œ ์‹คํ–‰ํ•ด์•ผ

๊ทธ๊ฒƒ์€ ์ข‹์€ ์ƒ๊ฐ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋ชจ๋“  ํŒจํ‚ค์ง€์˜ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ์ด ๋Š๋ฆผ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ์ฑ…์ž„์„ ์˜ฎ๊ธฐ๋Š”๋ฐ, ์ด๊ฒƒ์€ ๋‹จ์ง€ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

.pipignore๊ฐ€ ์ด๋ฅผ ์–ต์ œํ•˜๋Š” ๋นˆ .pipignore์™€ ํ•จ๊ป˜ .git, .hg ๋“ฑ์„ ์•”์‹œ์ ์œผ๋กœ ํฌํ•จํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

@piotr-dobrogost ์†Œ์Šค ์ €์žฅ์†Œ์—์„œ pip ์„ค์น˜๋Š” pip๊ฐ€ ์ถฉ๋ถ„ํ•œ ์ปจํ…์ŠคํŠธ๋ฅผ ๋ณต์‚ฌํ•˜์ง€ ์•Š๋Š” ๋‹ค์–‘ํ•œ ์ƒํ™ฉ์—์„œ ์ค‘๋‹จ๋ฉ๋‹ˆ๋‹ค(์˜ˆ: pypa/setuptools_scm#138).

์šฐ๋ฆฌ๋Š” ์ด์ „์— ๊ฐ™์€ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋ฌด์‹œํ–ˆ๋‹ค .git ์™€ ๊ฐ™์€ ๋ฐ ํŒŒ์‚ฐ ๊ฐ€์ง€ PBR ๋“ฑ์„ํ•˜๊ณ  ๋ณ€ํ™”๋ฅผ ๋˜๋Œ๋ฆด ์ˆ˜ ์žˆ์—ˆ๋‹ค.

@dstufft ๋ฃจํŠธ ๋Œ€์‹  git repo์˜

ํ , ํŒŒ์† ์ •๋„๊ฐ€ ์‹ฌํ–ˆ๋‹ค๋ฉด ์—ฌ๊ธฐ์„œ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์€ ์—†์Šต๋‹ˆ๋‹ค. ๋นŒ๋“œ PEP ์ค‘ ํ•˜๋‚˜๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์‹ญ์‹œ์˜ค.

pbr์€ .git dir์ด ์—†๋Š” ์ƒํƒœ์—์„œ ๋„˜์–ด์ง€๋ฉด ์ƒ๋‹นํžˆ ๋ถˆํ•ฉ๋ฆฌํ•œ ์ผ์„ ํ•˜๊ณ  ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ....

์ด์— ๋Œ€ํ•œ ์ง„์ „์ด ์žˆ๋Š”์ง€ ๊ถ๊ธˆํ•˜์‹ญ๋‹ˆ๊นŒ? .git ๋˜๋Š” .${scm} ํด๋”๊ฐ€ ๋ฒˆ๊ฑฐ๋กœ์šธ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์‚ฌ๋žŒ๋“ค์ด ์†Œ์Šค์™€ ํ•จ๊ป˜ .vagrant/ ๋ฅผ ํฌํ•จํ•˜๋ฉด ํ›จ์”ฌ ๋” ๋‚˜์ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž ์ •์˜ํ•  ์ˆ˜ ์žˆ๋Š” .pipignore ๊ฐ€ ์žˆ์œผ๋ฉด ๊ณ ํ†ต์„ ์™„ํ™”ํ•˜๋Š” ๋ฐ ์ •๋ง ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ ํฌ์ธํŠธ์˜ ๊ฒฝ์šฐ Javascript ํ”„๋กœ์ ํŠธ๋ฅผ ๋ฌธ์„œํ™”ํ•˜๊ธฐ ์œ„ํ•ด Sphinx๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ผ๋ถ€ ํ”„๋กœ์ ํŠธ์—๋Š” Python๊ณผ Javascript๊ฐ€ ํ˜ผํ•ฉ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ pip๋Š” ๋งค์šฐ ํฐ node_modules ๋””๋ ‰ํ† ๋ฆฌ๋„ ๋ณต์‚ฌํ•˜๋ฏ€๋กœ ๋งค์šฐ ๋Š๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ํ•˜๋“œ์ฝ”๋”ฉ๋œ ๊ฐ’์ด ๋ชจ๋“  ์œ ํ˜•์˜ ํ”„๋กœ์ ํŠธ์— ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ์‚ฌ์šฉ ์‚ฌ๋ก€๊ฐ€ ๊ฐ•์กฐ๋˜๋ฏ€๋กœ .pipignore ์˜ต์…˜์— ํˆฌํ‘œํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์‚ฌ๋žŒ๋“ค์€ SCM ํŒŒ์ผ ์ด์™ธ์˜ ๋ชจ๋“  ์ข…๋ฅ˜์˜ ์“ฐ๋ ˆ๊ธฐ๋ฅผ ํŠธ๋ฆฌ์— ๋ณด๊ด€ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ํŒจํ‚ค์ง€ ์†Œ์Šค ์ฝ”๋“œ์™€ ๋™์ผํ•œ ๋””๋ ‰ํ† ๋ฆฌ์— ๋ณด๊ด€ํ•˜๋Š” ์ฝ”๋“œ๋กœ ์ƒ์„ฑ๋œ ๋ช‡ ๊ฐ€์ง€ ํฐ ์‹œ๋ฎฌ๋ ˆ์ด์…˜(16GB ์ด์ƒ)์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค(๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ๋ฅผ ์ถ”์ ํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ).

pip install . ๋‚ด /tmp์— ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋นˆ์•ฝํ•œ ํŒŒํ‹ฐ์…˜์€ ์‹ค์ œ๋กœ ๊ณต๊ฐ„์ด ๋ถ€์กฑํ•˜๊ณ  pip๋Š” ๋””์Šคํฌ ๊ณต๊ฐ„ ์˜ค๋ฅ˜๋กœ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.

sdist๊ฐ€ ์‚ฌ์šฉ๋˜์ง€ ์•Š์•„์•ผ ํ•˜๊ณ  .pipignore๊ฐ€ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ™•์žฅํ•˜๋Š” ๊ฒฝ์šฐ MANIFEST.in/MANIFEST ํŒŒ์ผ์„ ๊ตฌ๋ฌธ ๋ถ„์„ํ•˜๊ธฐ ์œ„ํ•ด ์ฝ”๋“œ๋ฅผ ์žฌ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ? ์„ค์น˜์— ํ•„์š”ํ•œ ๋ชจ๋“  ํŒŒ์ผ์„ ์„ค๋ช…ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ข‹์€ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ ํŽธ์ง‘ ๊ฐ€๋Šฅํ•œ ์„ค์น˜( pip install -e $DIR )๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ข‹์€ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ ํŽธ์ง‘ ๊ฐ€๋Šฅํ•œ ์„ค์น˜(pip install -e $DIR)๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•ด pypi์—์„œ ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•˜๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ํ…Œ์ŠคํŠธํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. (์˜ˆ: ํŒจํ‚ค์ง€๋˜์ง€ ์•Š์€ ํŒจํ‚ค์ง€ ๋ฐ ๋ชจ๋“ˆ์€ ๊ณ„์† ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ)

์ด ์Šค๋ ˆ๋“œ์—์„œ ์ด์ „์— ์–ธ๊ธ‰๋œ ์ ์ด ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

๋” ๋‚˜์€ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ setup.py๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ง์ ‘ sdist ๋˜๋Š” ํœ ์„ ๋งŒ๋“ค๊ณ  pip๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒ์„ฑ๋œ ์ธ๊ณต๋ฌผ์„ ์„ค์น˜ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ฒŒํ•˜๋ฉด pip๋Š” ๋””๋ ‰ํ† ๋ฆฌ ๋ณต์‚ฌ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š์œผ๋ฉฐ (์„ค์น˜ํ•  ํŒŒ์ผ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์—) ์ด๊ฒƒ์€ pip install . (pip 9 ๊ธฐ์ค€)์—์„œ์™€ ๋˜‘๊ฐ™์€ ๊ฒฐ๊ณผ์ž…๋‹ˆ๋‹ค. ๋””๋ ‰ํ† ๋ฆฌ ์‚ฌ๋ณธ.

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

๊ธฐ์กด ์ž‘์—…์„ ์ค‘๋‹จํ•˜์ง€ ์•Š๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ํ•ฉ์˜๊ฐ€ ์—†์œผ๋ฉด .pipignore ์™€ ๊ฐ™์€ ์†”๋ฃจ์…˜์„ ์˜ตํŠธ์ธ์œผ๋กœ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋ช‡ ๊ฐ€์ง€ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ๋ฌธ์ œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

@andre-merzky ์ง„์ •ํ•˜์„ธ์š”.

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

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

@pfmoore ์–ด์กฐ์— ๋Œ€ํ•ด ์œ ๊ฐ์Šค๋Ÿฝ๊ฒŒ ์ƒ๊ฐํ•˜๊ณ  ์ขŒ์ ˆ๊ฐ์„ ๋Š๊ผˆ์Šต๋‹ˆ๋‹ค... ์ €๋Š” ์‚ฌ์†Œํ•œ(๋”ฐ๋ผ์„œ ์ˆ˜์šฉํ•  ์ˆ˜ ์—†๋Š”) ์ˆ˜์ • ์‚ฌํ•ญ(#4900)์— ๋Œ€ํ•œ PR์„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ์ถœ์‹œ ์ฃผ๊ธฐ์— ๋Œ€ํ•ด ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ์ผ์ด ๊ทธ๋ ‡๊ฒŒ ์ง„ํ–‰๋˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค...

์ด๊ฒƒ์—๋„ ๋ถ€๋”ช์ณค์Šต๋‹ˆ๋‹ค.

(env) $ find node_modules/ | wc -l
140287
(env) $ time pip install .
Processing /path/to/myproject
Installing collected packages: myproject
  Running setup.py install for myproject ... done
Successfully installed myproject-1.0

real    4m35.598s
user    0m6.928s
sys 0m7.992s

์žฌ์„ค์ • ํ›„:

(env) $ mv node_modules/ ../
(env) $ time pip install .
Processing /path/to/myproject
Installing collected packages: myproject
  Running setup.py install for myproject ... done
Successfully installed myproject-1.0

real    0m0.899s
user    0m0.496s
sys 0m0.120s

๋ฌธ์ œ์— ๋Œ€ํ•œ ์ตœ์‹  ํ”„๋กœํŒŒ์ผ๋ง ๋ณด๊ณ ์„œ๋Š” ์–ด๋””์— ์žˆ์Šต๋‹ˆ๊นŒ?

๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์—†์Šต๋‹ˆ๋‹ค. ์˜ค๋Š˜๋‚  pip๋Š” ์—ฌ์ „ํžˆ ์ „์ฒด ํŒจํ‚ค์ง€๋ฅผ ์ž„์‹œ ๋นŒ๋“œ ๋””๋ ‰ํ† ๋ฆฌ์— ๋ณต์‚ฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ์Šต๋‹ˆ๊นŒ?

์•„๋‹ˆ์š”, ๋””์Šคํฌ์— ๊ธฐ๋ก๋˜๋ฏ€๋กœ ๊ณต์œ  ํŒŒ์ผ ์‹œ์Šคํ…œ์—์„œ ํŠนํžˆ ๊ณ ํ†ต์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค...

์ ์–ด๋„ /tmp ๋˜๋Š” /dev/shm ์ž…๋‹ˆ๊นŒ? https://stackoverflow.com/questions/9745281/tmp-vs-dev-shm-for-temp-file-storage-on-linux tmpfs ๊ฐ€ ์‚ฌ์šฉ๋˜์ง€ ์•Š์„ ๋•Œ ๊ฐ์ง€ํ•˜์—ฌ ์ƒ์„ฑ์„ ์ œ์•ˆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

/tmp ์žˆ์Šต๋‹ˆ๋‹ค. stdlib tempfile ์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

PEP 517์„ ๊ตฌํ˜„ํ•˜๋ฉด ์ด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ตœ์‹  ๊ฐœ๋ฐœ์ž ๋ฒ„์ „์˜ pip๋กœ ์ด ๋ฌธ์ œ๋ฅผ ๊ฒช๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. PEP 517 ์ง€์›์ด pip 19์— ์ถ”๊ฐ€๋˜์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋Š”๋ฐ, ๊ณ„์† ๋ฐœ์ƒํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

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

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

์šฐ๋ฆฌ๋Š” ์˜ค๋Š˜ ์ด https://github.com/pypa/pip/issues/2195#issuecomment -351258913์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ์ „ํžˆ ์ผ์–ด๋‚˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

(venv) (venv) pip --version
pip 19.1.1 from /application/venv/lib/python2.7/site-packages/pip (python 2.7)

PEP 517์„ ๊ตฌํ˜„ํ•˜๋ฉด ์ด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋ฉ๋‹ˆ๋‹ค.

ํ•ด์„ค์ž: ๊ทธ๋ ‡์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด sdist๋ฅผ ํ†ตํ•ด ์„ค์น˜ํ•ด์•ผ ํ•˜๋ฉฐ, ์ง€๋‚œ๋ฒˆ์— ๋…ผ์˜ํ–ˆ์„ ๋•Œ ์‹ค์ œ ์†Œ์Šค ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ๋žŒ๋“ค๋กœ๋ถ€ํ„ฐ ๋งŽ์€ ๋ฐ˜๋ฐœ์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ์ธ์ ์œผ๋กœ ๋‚˜๋Š” ์šฐ๋ฆฌ๊ฐ€ ๋‹น์‹ ์ด ํ•  ๋•Œ ๋™์ผํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ œ๊ณตํ•˜์ง€ ์•Š๋Š” ์ด์•Œ ๋ฐ ์ง€์› ์ค‘๋‹จ ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค ๋ฌผ๋ฆฐํ•ด์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐ build_sdist ๋‹ค์Œ build_wheel ๊ทธ๋ƒฅ ํ•  ๋•Œ ๋‹น์‹ ์ด ์–ป์„์œผ๋กœ build_wheel , ํ•˜์ง€๋งŒ ํ˜„์žฌ๋กœ์„œ๋Š” ๊ทธ ์ œ์•ˆ์„ ์˜นํ˜ธํ•  ์‹œ๊ฐ„์ด๋‚˜ ์—๋„ˆ์ง€๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด sdist๋ฅผ ํ†ตํ•ด ์„ค์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์‹ค, no - #4900์€ ์ด์ „ ๋ฒ„์ „๊ณผ ํ˜ธํ™˜๋˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ž‘์€ ์ฝ”๋“œ๋กœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ตฌํ˜„์„ ์ œ๊ณตํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์ง€ ๋ชปํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ ์ด ํ‹ฐ์ผ“์˜ ๋‚˜์ด๋ฅผ ๊ฐ์•ˆํ•  ๋•Œ ๊ทธ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์žฌ๊ณ ํ•ด ๋‹ฌ๋ผ๊ณ  ์š”์ฒญํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

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

์ธํ”Œ๋ ˆ์ด์Šค ๋นŒ๋“œ์— ๊ด€์‹ฌ์ด ์žˆ์–ด์„œ "ํ•ญ์ƒ sdist ๊ฒฝ๋กœ๋ฅผ ํ†ตํ•ด ๊ฐ€์•ผ ํ•จ"์„ ์‹ซ์–ดํ–ˆ๋˜ ์‚ฌ๋žŒ์œผ๋กœ์„œ: ์ €๋Š” ์˜ค๋ž˜์ „์— "go sdist ๊ฒฝ๋กœ"์™€ ํ™”ํ•ดํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋Š” ๋ฐœ์ƒํ•˜๋ฉด _๋งค์šฐ_ ๊ณ ํ†ต์Šค๋Ÿฝ๊ณ  "๊ธฐ๋ณธ์ ์œผ๋กœ ๋ชจ๋“  ๊ฒƒ์„ ๋ณต์‚ฌ"ํ•˜๋Š” ๊ฒƒ์€ ๊ฑฐ์˜ ์˜๋ฏธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ด์•Œ์„ ๋ฌผ์–ด๋œฏ๋Š” ๋ฐ +10์ด ๋ฉ๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด sdist๋ฅผ ํ†ตํ•ด ์„ค์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” PEP 517๋กœ ์ „ํ™˜ํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ž˜๋ชป ๊ฐ€์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์—ฌ๊ธฐ์— ์ „์ ์œผ๋กœ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค.

IIRC ์šฐ๋ฆฌ๋Š” ํ•  ์ˆ˜ ์žˆ์—ˆ์ง€๋งŒ sdist๋ฅผ ํ†ตํ•œ ์„ค์น˜๊ฐ€ ํ—ˆ์šฉ๋˜๋Š”์ง€ ์—ฌ๋ถ€์— ๋Œ€ํ•œ ๋…ผ์Ÿ์€ ๋‹น์‹œ ์ถ”๊ฐ€ํ•˜๊ธฐ์—๋Š” ๋„ˆ๋ฌด ๋งŽ์€ ์ถ”๊ฐ€ ๋…ผ์Ÿ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ•์ขŒ :-)

๋‚˜๋Š” ์—ฌ์ „ํžˆ sdist๋ฅผ ํ†ตํ•ด ๊ฑด๋ฌผ๋กœ ์ „ํ™˜ํ•˜๋Š” ๊ฒƒ์„ ์„ ํ˜ธํ•˜์ง€๋งŒ ์ง€๊ธˆ์€ ์ง์ ‘ ํ•  ์‹œ๊ฐ„์ด ์—†์Šต๋‹ˆ๋‹ค.

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•: ์–•์€ ๋ณต์ œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค(๊นŠ์ด๋ฅผ ์ ์ ˆํ•˜๊ฒŒ ๋ณ€๊ฒฝ).

cd d:\code
git clone --depth=100 https://github.com/PROJECT/PROJECT.git d:/code/shallow-PROJECT
move d:\code\PROJECT d:\code\PROJECT-bloated
move d:\code\shallow-PROJECT d:\code\PROJECT

๋ฐ˜๋ณตํ•˜๊ณ  ์š”์•ฝํ•˜์ž๋ฉด:

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

์ด์ œ ์ด ๊ฒฝ๋กœ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•œ pip์˜ ๋นŒ๋“œ ๋ฉ”์ปค๋‹ˆ์ฆ˜๊ณผ ๊ด€๋ จ๋œ ์—ฌ๋Ÿฌ ์‚ฌ์šฉ์„ฑ ๋ฌธ์ œ๋„ ํ•ด๊ฒฐ๋ฉ๋‹ˆ๋‹ค.

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

์•„, ๊ทธ๋ฆฌ๊ณ  ์ด์— ๋Œ€ํ•œ ๋ฐ˜์ฐฝ๊ณ  ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์œผ๋กœ #6770์— ์ถ”๊ฐ€๋œ pip 19.3์€ ๋ณต์‚ฌํ•  ๋•Œ .nox ๋ฐ .tox ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ œ์™ธํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ƒ๋‹นํ•œ ์ˆ˜์˜ ์‚ฌ์šฉ์ž์— ๋Œ€ํ•ด ์ด๋Ÿฌํ•œ ์„ค์น˜์— ์†Œ์š”๋˜๋Š” ์‹œ๊ฐ„์ด ์ค„์–ด๋“ญ๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ํฐ .git ๋˜๋Š” build ๋””๋ ‰ํ† ๋ฆฌ์— ๋Œ€ํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์ œ๊ฐ€ ์œ„์˜ ์„ค๋ช…์—์„œ ์ž์„ธํžˆ ์„ค๋ช…ํ•œ ์ ‘๊ทผ ๋ฐฉ์‹์œผ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. :)

์ด๊ฒƒ์€ ํฐ .git ๋˜๋Š” build ๋””๋ ‰ํ† ๋ฆฌ์— ๋Œ€ํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์ œ๊ฐ€ ์œ„์˜ ์„ค๋ช…์—์„œ ์ž์„ธํžˆ ์„ค๋ช…ํ•œ ์ ‘๊ทผ ๋ฐฉ์‹์œผ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. :)

.git ์— ์˜์กดํ•˜๋Š” ๋„๊ตฌ๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ build ๋ณต์‚ฌ์— ์˜์กดํ•˜๋Š” ์‚ฌ๋žŒ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ๋ฌด์‹œ๋œ ๋””๋ ‰ํ† ๋ฆฌ์— ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์œผ๋ฉฐ ๋™์˜ํ•˜๋ฉด PR์„ ๋ณด๋‚ด๋“œ๋ฆฝ๋‹ˆ๋‹ค.

์ด๊ฑฐ ์•„์ง ์กฐ์‚ฌ์ค‘์ธ๊ฐ€์š”? pip install . ์ค‘์— ์—ฌ๋Ÿฌ ๊ธฐ๊ฐ€๋ฐ”์ดํŠธ์˜ git ๋ฌด์‹œ ๋””๋ฒ„๊ทธ ๋ฐ์ดํ„ฐ ๋คํ”„๊ฐ€ ๋ณต์‚ฌ๋˜๋Š” ๊ฒƒ์„ ๋ณด๋Š” ๊ฒƒ์€ ๋งค์šฐ ๊ณ ํ†ต์Šค๋Ÿฌ์šด ๋†€๋ผ์›€์ž…๋‹ˆ๋‹ค.

์˜ˆ, #7555์™€ ๊ฐ™์€ ์—ฐ๊ฒฐ๋œ ๋ฌธ์ œ๋ฅผ ์‚ดํŽด๋ณด์‹ญ์‹œ์˜ค.

์ด ๋ฌธ์ œ๋Š” ๋‚ด๊ฐ€ ์„ค์น˜ํ•˜๋Š” ๋””๋ ‰ํ† ๋ฆฌ์— 10mb์˜ ํŒŒ์ด์ฌ ์ฝ”๋“œ๊ฐ€ ์žˆ์ง€๋งŒ ๋งŽ์€ json ๋ฐ์ดํ„ฐ ํŒŒ์ผ๊ณผ .git ๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ์ „ํžˆ ์ง€์†๋ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ #7882(์ ์†Œ์— ๋กœ์ปฌ ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์ถ•)๋กœ ํ•ด๊ฒฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

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

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

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

๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ์ƒ๋‹นํžˆ ๋‚ซ๋‹ค๊ณ  ๋งํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด์ „: noglob pip3 install . 3.76s user 2.51s system 12% cpu 50.245 total

์‹ ๊ทœ: noglob pip3 install . 3.40s user 0.70s system 42% cpu 9.764 total

๋‚˜๋ฅผ ์œ„ํ•ด ํ›Œ๋ฅญํ•˜๊ฒŒ / ๋” ๋น ๋ฅด๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค! :+1:

ยป pip --version
pip 20.0.2 
ยป time pip install .
noglob pip install .  8.03s user 18.47s system 25% cpu 1:44.84 total
ยป pip --version
pip 20.1b1 
ยป time pip install .
noglob pip install .  3.69s user 0.31s system 92% cpu 4.307 total

~2๋ถ„์—์„œ 4์ดˆ๋กœ ์ค„์˜€์Šต๋‹ˆ๋‹ค. ์ •๋ง ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

๊ธ์ •์ ์ธ ๋ณด๊ณ ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค @PythonCoderAS @astrofrog @klamann! :)

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

์ด๋กœ ์ธํ•ด ๋ถˆํŽธ์„ ๋“œ๋ ค ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค.

๋ถˆํ–‰ํžˆ๋„ ์ธํ”Œ๋ ˆ์ด์Šค ๋นŒ๋“œ ๊ตฌํ˜„๊ณผ ๊ด€๋ จํ•˜์—ฌ ๋งŽ์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

@pradyunsg ์—…๋ฐ์ดํŠธ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์šฉ์–ด์— ๋Œ€ํ•œ ๋ช‡ ๊ฐ€์ง€ ํ”ผ๋“œ๋ฐฑ(์ฐธ๊ณ ๋งŒ ํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค): ์ด ๋ฌธ์žฅ๊ณผ gh-7555๋Š” pip๊ฐ€ ๋‚ด๋ถ€ ๋นŒ๋“œ๋ฅผ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ €๋ฅผ ํ˜ผ๋ž€์Šค๋Ÿฝ๊ฒŒ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด๋ถ€ ๋นŒ๋“œ๊ฐ€ ํ•ญ์ƒ ์˜๋ฏธํ•˜๋Š” ๊ฒƒ์€ python setup.py build_ext --inplace (๋˜๋Š” python setup.py develop )์ž…๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ ์˜๋ฏธ๋ฅผ "tmpdir์— ๋ณต์‚ฌํ•˜์ง€ ์•Š๊ณ  ๋นŒ๋“œ"๋กœ ๋ณ€๊ฒฝํ–ˆ์Šต๋‹ˆ๋‹ค. ํ™•์žฅ ๋ชจ๋“ˆ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹์ œ์ž๋ฆฌ์—์„œ ๋๋‚˜์ง€ ์•Š๊ณ  ์ผ๋ฐ˜์ ์œผ๋กœ ์‰ฝ๊ฒŒ ์ •๋ฆฌ๋˜๋Š” build/ ๋””๋ ‰ํ† ๋ฆฌ์— ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด gh-7555์—์„œ ์ข€ ๋” ๋ช…์‹œ์ ์ด๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์›๋ž˜ ๋‚ด ๋ง์ด์—ˆ๋‹ค. ํ˜ผ๋ž€์„ ๋“œ๋ ค ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ์ €๋Š” setuptools๊ฐ€ "in place"๋ผ๋Š” ์šฉ์–ด๋ฅผ ๋‹ค๋ฅธ ์˜๋ฏธ๋กœ ์‚ฌ์šฉํ–ˆ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์•Œ์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค(๊ทธ๋ฆฌ๊ณ  ๊ทธ ์šฉ์–ด๊ฐ€ setuptools ์™ธ๋ถ€์— ์–ด๋–ป๊ฒŒ ์ ์šฉ๋˜๋Š”์ง€ ์•„์ง ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค). ์•ž์œผ๋กœ ๋” ์ค‘๋ฆฝ์ ์ธ ์šฉ์–ด๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๋Š”์ง€ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

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

๊ทธ๋ฆฌ๊ณ  ๊ทธ ์šฉ์–ด๊ฐ€ setuptools ์™ธ๋ถ€์— ์–ด๋–ป๊ฒŒ ์ ์šฉ๋˜๋Š”์ง€ ์•„์ง ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

CMake ๋ฐ scikit-build์™€ ๊ฐ™์€ ๋„๊ตฌ์˜ ๊ฒฝ์šฐ ๋™์ผํ•œ ์˜๋ฏธ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ๋Š” ์ œ์ž๋ฆฌ์— ์žˆ๊ณ  ๋ฐ”์ด๋„ˆ๋ฆฌ๊ฐ€ ์†Œ์Šค ์˜†์— ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐ˜๋ฉด์— "ํŽธ์ง‘ ๊ฐ€๋Šฅํ•œ ์„ค์น˜"๋Š” (๋‚ด ์ƒ๊ฐ์—) ์—ฌ๊ธฐ์—์„œ ๋ฐœ๋ช…๋˜์—ˆ์œผ๋ฉฐ ์ผ์ข…์˜ "pip๊ฐ€ ์ธ์‹ํ•˜๋Š” ์ œ์ž๋ฆฌ"๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

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

์•„๋งˆ๋„ "๋กœ์ปฌ ๋นŒ๋“œ"(ํ˜„์žฌ "tmpdir ๋ฐ ๋นŒ๋“œ์— ๋ณต์‚ฌ")?

๋ฐ˜๋ฉด์— "ํŽธ์ง‘ ๊ฐ€๋Šฅํ•œ ์„ค์น˜"๋Š” (๋‚ด ์ƒ๊ฐ์—) ์—ฌ๊ธฐ์—์„œ ๋ฐœ๋ช…๋˜์—ˆ์œผ๋ฉฐ ์ผ์ข…์˜ "pip๊ฐ€ ์ธ์‹ํ•˜๋Š” ์ œ์ž๋ฆฌ"๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ์ตœ๊ทผ์— ํŽธ์ง‘ ๊ฐ€๋Šฅํ•œ ์„ค์น˜๊ฐ€ ๋ฌด์—‡์„ ์˜๋ฏธํ•˜๋Š”์ง€์— ๋Œ€ํ•ด ๊ธด ํ† ๋ก ์„ ํ–ˆ์œผ๋ฉฐ ์‹ค์ œ๋กœ pip๊ฐ€ ๊ฐ€๋Š” ํ•œ machine local ์— ๋” ๊ฐ€๊นŒ์šด ์œ„์น˜์— ๋„์ฐฉํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ pip๋Š” ๋กœ์ปฌ ์‹œ์Šคํ…œ์˜ ์œ„์น˜์™€ ๋ฐฉ๋ฒ•์„ ์•Œ์ง€ ๋ชปํ•˜๋ฉฐ ์ด๋ฅผ ์ •์˜ํ•˜๊ณ  ์ฒ˜๋ฆฌํ•˜๋Š” ๋นŒ๋“œ ๋ฐฑ์—”๋“œ ์ž‘์—…์ž…๋‹ˆ๋‹ค.

ยซin-tree ๋นŒ๋“œยป(ยซin-tree PEP 517 ๋ฐฑ์—”๋“œยป์™€ ์œ ์‚ฌ) ๋˜๋Š” ยซbuild in source dirยป์„ ์‹œ๋„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ œ ์งˆ๋ฌธ์€ ๊ธฐ๋Šฅ์ด ์„ ํƒ ์‚ฌํ•ญ์ด ๋  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ค์ง€ ์•Š์ง€๋งŒ ์ธ์ˆ˜ ๋˜๋Š” ์ด์™€ ์œ ์‚ฌํ•œ ๊ฒƒ์œผ๋กœ ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

ํŽธ์ง‘ ๊ฐ€๋Šฅํ•œ ์„ค์น˜๊ฐ€ ์˜ต์…˜์ด ์•„๋‹Œ ์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๋จธ๋ฆฌ๋ฅผ ์“ฐ๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์žˆ์–ด์š”?

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ ํœ ์„ ๋นŒ๋“œํ•œ ๋‹ค์Œ(๋นŒ๋“œ ๋ฐฑ์—”๋“œ๋ฅผ ์ง์ ‘ ์‚ฌ์šฉํ•˜์—ฌ) pip๋ฅผ ์ง€์ •ํ•˜์—ฌ ์„ค์น˜ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์™œ ๊ธฐ๋Šฅ์€ ์„ ํƒ ์‚ฌํ•ญ์ด ๋  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ค์ง€ ์•Š์ง€๋งŒ ์ธ์ˆ˜ ๋˜๋Š” ์ด์™€ ์œ ์‚ฌํ•œ ๊ฒƒ์œผ๋กœ ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๊ทธ๊ฒƒ์€ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋˜๋Œ๋ฆฐ ์ด์œ ๋Š” ์˜ตํŠธ์•„์›ƒ์ด๋‚˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์— ๋Œ€ํ•œ ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ›์„ ๊ธฐ๊ฐ„์ด ์—†์—ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ์šฉ์ดํ•˜๊ฒŒ ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” ์ƒˆ๋กœ์šด ํ”Œ๋ž˜๊ทธ(--use-feature ๋ฐ --deprecated-feature)๊ฐ€ ์žˆ์ง€๋งŒ ๋ˆ„๊ตฐ๊ฐ€ ์ง€๊ธˆ ์ด ์ปจํ…์ŠคํŠธ์—์„œ ๊ธฐ๋Šฅ์„ ๋‹ค์‹œ ๊ตฌํ˜„/์žฌ๋„์ž…ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

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

  • --use-feature=in-tree-build๋ฅผ ์˜ตํŠธ์ธ์œผ๋กœ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
  • --deprecated-feature=out-of-tree-build๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ดํ›„ ๋ฆด๋ฆฌ์Šค์—์„œ ๊ธฐ๋ณธ๊ฐ’์„ ์˜ตํŠธ์•„์›ƒ์œผ๋กœ ์ „ํ™˜ํ•˜๊ณ  --use-feature=in-tree-build ์‚ฌ์šฉ์ž๋ฅผ ๋ฐ€์–ด์„œ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.
  • ํ›„์† ๋ฆด๋ฆฌ์Šค์—์„œ ๋‘ ์˜ต์…˜์„ ๋ชจ๋‘ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ ํœ ์„ ๋นŒ๋“œํ•œ ๋‹ค์Œ(๋นŒ๋“œ ๋ฐฑ์—”๋“œ๋ฅผ ์ง์ ‘ ์‚ฌ์šฉํ•˜์—ฌ) pip๋ฅผ ์ง€์ •ํ•˜์—ฌ ์„ค์น˜ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ถ”๊ฐ€ ๋นŒ๋“œ ๋‹จ๊ณ„ ์—†์ด ์ƒ๊ฐํ•˜๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‚˜๋Š” ์ฒ˜์Œ๋ถ€ํ„ฐ Python์ด Makefile์— ์ƒ์‘ํ•˜๋Š” ๊ฒƒ ์—†์ด ๋ฒ—์–ด๋‚  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ๋ง์•˜์–ด์•ผ ํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

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