์ด ๋ฌธ์ ์ ๋ํ ์์ฝ์ 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" ๋ผ์ธ์ด ์ฆ์ ๋ํ๋๊ณ ๊ทธ ๋ผ์ธ๊ณผ ๋ค์ ๋ผ์ธ ์ฌ์ด์ ๊ฑฐ์ ์ ์ฒด ์ง์ฐ์ด ์๋ ๊ฒ์ฒ๋ผ ๋ณด์ ๋๋ค.
.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์ ๋น๋ ๋ก์ง๊ณผ ์๋นํ ๊ด๋ จ์ด ์์ต๋๋ค. ๊ฐ์ฅ ๊ฐ๋จํ ์ฝ๋๊ฐ ์๋๋ฉฐ ๊ตฌํ ์ค์๋ง ์์์ฐจ๋ฆด ์ ์๋ ๊น๋ค๋ก์ด ๊ฒฝ์ฐ๊ฐ ์์ ์ ์์ต๋๋ค.
์, ๊ทธ๋ฆฌ๊ณ ์ด์ ๋ํ ๋ฐ์ฐฝ๊ณ ํด๊ฒฐ ๋ฐฉ๋ฒ์ผ๋ก #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)๊ฐ ์์ง๋ง ๋๊ตฐ๊ฐ ์ง๊ธ ์ด ์ปจํ ์คํธ์์ ๊ธฐ๋ฅ์ ๋ค์ ๊ตฌํ/์ฌ๋์ ํด์ผ ํฉ๋๋ค.
์ผ๋ฐ์ ์ผ๋ก ์ฐ๋ฆฌ๊ฐ ์ฌ๊ธฐ์ ํ๊ณ ์ ํ๋ ๊ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
ํด๊ฒฐ ๋ฐฉ๋ฒ์ ํ ์ ๋น๋ํ ๋ค์(๋น๋ ๋ฐฑ์๋๋ฅผ ์ง์ ์ฌ์ฉํ์ฌ) pip๋ฅผ ์ง์ ํ์ฌ ์ค์นํ๋ ๊ฒ์ ๋๋ค.
์ถ๊ฐ ๋น๋ ๋จ๊ณ ์์ด ์๊ฐํ๊ณ ์์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋๋ ์ฒ์๋ถํฐ Python์ด Makefile์ ์์ํ๋ ๊ฒ ์์ด ๋ฒ์ด๋ ์ ์๋ค๊ณ ์๊ฐํ์ง ๋ง์์ด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
ํด์ค์: ๊ทธ๋ ์ง ์์์ต๋๋ค.