ãã®åé¡ã®æŠèŠã«ã€ããŠã¯ã 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(
ãããŠãããã
> /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
7000äžã®ãã¡pip
ã§ãã
https://github.com/pypa/pip/pull/2535ãåç
§ããŠunpack_file_url
ãé«éåããŸãã
ããŒãžãããPRã¯äœãããªãã£ãããããã®åé¡ãåéããå¿ èŠããããŸãïŒgh-3219ãåç §ïŒã
ãã®åé¡ã®é²å±ã¯ãããŸããïŒ
ããããæçµçãªè§£æ±ºçãããã«å°çããããã«ã¯èŠããŸããã PEP516ãŸãã¯PEP517ã¯ãæåã«sdist
çæããããšãæ£ãããã©ããã決å®ããåã«ãåãå
¥ããå¿
èŠããããŸãïŒå人çã«ã¯ããã¯æããŸããïŒã
PEP516ã¯ããã次ã®ããã«èŠçŽããŸãã
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ã§ïŒãœãŒã¹é
åžã®ä»£ããã«ããŸãã¯å
¬éããã±ãŒãžãšèšãã¹ãã§ããïŒãã¢ãªããžããªããã€ã³ã¹ããŒã«ãããšãã«äœããã¹ããåæ§ã®åé¡â giturlããã±ãŒãžã«å¯ŸããŠ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ã«æé»çã«.gitã.hgãªã©ãå«ãã空ã®.pipignoreã§ãããæå¶ããŸãã
@ piotr-dobrogostãœãŒã¹ãªããžããªããã®pipã€ã³ã¹ããŒã«ã¯ãpipãååãªã³ã³ããã¹ããã³ããŒããªãããŸããŸãªç¶æ³ã§å£ããŸã-ããšãã°ãpypa / setuptools_scmïŒ138
以åã¯.git
ãªã©ã®ãã£ã¬ã¯ããªãç¡èŠããpbrãªã©ãå£ããŠãå€æŽãå
ã«æ»ãå¿
èŠããããŸããã
@dstufftã«ãŒãã§ã¯ãªãgitãªããžããªã®ãµããã£ã¬ã¯ããªã«ããå Žåã§ããåé¡ãçºçããŸã^^
ããŒãããã®ç Žæãååã«ã²ã©ãå Žåã¯ãããã§ç©äºãæ¹åããç°¡åãªæ¹æ³ã¯ãããŸããã 次ã«ããã«ãPEPã®1ã€ãåŸ æ©ããŠãããšæããŸãã
.git
dirãååšããªãç¶æ
ã§ãã©ãŒã«ãªãŒããŒããå Žåãpbrã¯éåžžã«äžåçãªããšãããŠããã«éããããŸãããããŸãâŠã
ããã«äœãé²å±ããããã©ããçåã«æããŸããïŒ .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ãäžããŠæ¿èªããããšããŠããPIP10ãŸã§ãªãªãŒã¹ãããªãããšã«æ³šæããŠãã ãããäžèšã§èšåãããé«é¡ãªãäœæ¥ã®å°ãªããšãäžéšãåãå ¥ããããªãªãŒã¹ïŒãã©ã³ãã£ã¢ã®ãªãœãŒã¹ã®å¶çŽã®ããã«çºçããªãå¯èœæ§ããããŸããããããç§ãã¡ã®ç®æšã§ãïŒã ãããã£ãŠããªãªãŒã¹ãããåã«çœ®ãæããããå¯èœæ§ããããŸããã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ã®ææ°ã®éçºè ããŒãžã§ã³ã§ããã«ééããŠããŸã-PEP517ãµããŒããpip19ã«è¿œå ããããšæã£ãã®ã§ãããã¯ãŸã çºçããŠããã¯ãã§ããïŒ
ç§ã®å Žåãå€ãã®ãªã¢ãŒããšãã©ã³ãããããããžã§ã¯ãïŒ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çµç±ã§ã€ã³ã¹ããŒã«ããå¿ èŠããããŸã
å®éã«ã¯ãããã-ïŒ4900ã¯ãäžäœäºææ§ã®ããæ¹æ³ã§å°ããªã³ãŒãã§åé¡ã解決ããå®è£ ãæäŸããŠããŸããã ä»ã®åé¡ã¯è§£æ±ºããªããããããŸãããããã®ãã±ããã®å¹Žéœ¢ãèãããšããã®ã¢ãããŒããåèããããã«ãé¡ãããããšæããŸãã
ãããä¿®æ£ããã«ã¯ãsdistãä»ããŠã€ã³ã¹ããŒã«ããå¿ èŠããããŸããåå説æãããšãã«ãå®éã®ãœãŒã¹ãã£ã¬ã¯ããªãïŒæããã«ïŒå¿ èŠãšããããŒã«ã䜿çšããŠãã人ã ããå€ãã®åçºããããŸããã å人çã«ã¯ãbuild_sdistãå®è¡ããåŸãbuild_wheelãå®è¡ãããšããšåãçµæãåŸãããªããã«ãããã»ã¹ãå»æ¢ããå¿ èŠããããšæããŸããããã®ææ¡ãèªåã§æ¯æããæéããšãã«ã®ãŒããããŸããããã®æç¹ã§ã
ã€ã³ãã¬ãŒã¹ãã«ããæ°ã«ããããåžžã«sdistã«ãŒããçµç±ããå¿ èŠããããããšãå«ã£ã人ãšããŠïŒç§ã¯ãã£ãšåã«ãgosdistã«ãŒãããšå解ããŸããã
ãã®åé¡ã«ééããå Žåããã®åé¡ã¯_éåžžã«_èŠçã§ããããããã©ã«ãã§ãã¹ãŠãã³ããŒãããããšã¯ã»ãšãã©æå³ããããŸããã ã ãã匟䞞ãåãã®ã«+10ã
ãããä¿®æ£ããã«ã¯ãsdistçµç±ã§ã€ã³ã¹ããŒã«ããå¿ èŠããããŸã
ééã£ãŠãPEP517ã§åãæ¿ãããšæã£ãŠããŸããã
ç§ã¯ããã§ããªãã«å®å šã«åæããŸãã
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
ã³ããŒã«äŸåããŠãã人ã¯ããŸããïŒ ç¡èŠãããdirã«è¿œå ãããšããã§ããããåæããå Žåã¯ãPRãéä¿¡ããŠãã ããã
ããã¯ãŸã 調æ»äžã§ããïŒ pip install .
éã«ãè€æ°ã®ã¬ãã€ãã®gitãç¡èŠããããããã°ããŒã¿ãã³ããã³ããŒãããã®ãèŠãã®ã¯éåžžã«çãé©ãã§ãã
ã¯ããïŒ7555ã®ãããªãªã³ã¯ãããåé¡ãèŠãŠãã ããã
ã€ã³ã¹ããŒã«å
ã®ãã£ã¬ã¯ããªã«ã¯ãããã10MBã®Pythonã³ãŒããå«ãŸããŠããããããã®åé¡ã¯åŒãç¶ãçºçããŸãããå€ãã®jsonããŒã¿ãã¡ã€ã«ãš.git
ãŸãã
ããã¯ïŒ7882ïŒããŒã«ã«ãã£ã¬ã¯ããªãé©åã«æ§ç¯ããïŒã«ãã£ãŠè§£æ±ºãããã¯ãã§ãã
çŸåšïŒïŒ7951ã«åŸã£ãŠïŒpipã®ããŒã¿ãªãªãŒã¹ã§ããpip20.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ããã€ã³ãã¬ãŒã¹ããšããçšèªãå¥ã®æå³ã§äœ¿çšããŠããããšã«æ°ã¥ããŠããŸããã§ããïŒãããŠããã®çšèªãsetuptoolsã®å€éšã§ã©ã®ããã«é©çšããããã¯ãŸã ããããããŸããïŒã å°æ¥ããã£ãšäžç«çãªçšèªãèŠã€ããããšãã§ãããã©ããã確èªããŸãïŒãã ããæã«è² ããªãã®ã§ãããäœãããããŸãã-ææ¡ã¯ãããããåãå ¥ããããŸããðïŒ
@pfmooreã«æè¬ããŸãã çšèªã«ã€ããŠã®æ··ä¹±ã¯æã ãäºããéãè¶ããŠè©±ãããšã«ãªããããããªãã®ã§ãç§ã¯ãããææããããšæããŸããã
ãããŠããã®çšèªãsetuptoolsã®å€ã§ã©ã®ããã«é©çšãããã®ããŸã ããããããŸãã
CMakeãscikit-buildã®ãããªããŒã«ã®å Žåãããã¯åãããšãæå³ãããšæããŸããå®éã«ã¯ã€ã³ãã¬ãŒã¹ã§ããã€ããªã¯ãœãŒã¹ã®é£ã«é 眮ãããŸãã
äžæ¹ããç·šéå¯èœãªã€ã³ã¹ããŒã«ãã¯ïŒç§ãä¿¡ããïŒããã§çºæããããã®ã§ãããã¡ãã£ãšãããããèªèããŠããã€ã³ãã¬ãŒã¹ããæå³ããŸãã
æã«è² ããªãããç§ã¯äœãããããªã-ææ¡ã¯ãããããããšã«åãå ¥ãããã
ãã¶ããããŒã«ã«ãã«ããïŒvs.çŸåšã®ãtmpdirã«ã³ããŒããŠãã«ããïŒïŒ
äžæ¹ããç·šéå¯èœãªã€ã³ã¹ããŒã«ãã¯ïŒç§ãä¿¡ããïŒããã§çºæããããã®ã§ãããã¡ãã£ãšãããããèªèããŠããã€ã³ãã¬ãŒã¹ããæå³ããŸãã
æè¿ãç·šéå¯èœãªã€ã³ã¹ããŒã«ã®æå³ã«ã€ããŠé·ãè°è«ããããŸããããå®éã«ã¯ããããã«é¢ããŠã¯machine local
ã®ç·ã«æ²¿ã£ãå Žæã«çéžãããšæããŸãã ããããpipã¯ããŒã«ã«ãã·ã³ã®ã©ãã§ã©ã®ããã«åäœããããèªèããŠãããããããå®çŸ©ããŠåŠçããããã®ãã«ãããã¯ãšã³ããžã§ãã§ãã
«ããªãŒå ãã«ã»ïŒÂ«ããªãŒå PEP 517ããã¯ãšã³ã»ãšåæ§ïŒãŸãã¯Â«ãœãŒã¹ãã£ã¬ã¯ããªã§ã®ãã«ã»ãè©Šãããšãã§ããŸãã
ç§ã®è³ªåã¯ããªããã®æ©èœããªãã·ã§ã³ã«ã§ããªãã®ã§ãåé¡ã¯çºçããªãããåŒæ°ãªã©ã§æå¹ã«ã§ããã®ããšããããšã§ãã
ç·šéå¯èœãªã€ã³ã¹ããŒã«ããªãã·ã§ã³ã§ã¯ãªãå Žåããã®åé¿çã«é ãæ©ãŸããããšããŠããŸãã ãããŸããïŒ
åé¿çã¯ããã€ãŒã«ããã«ããïŒãã«ãããã¯ãšã³ããçŽæ¥äœ¿çšããŠïŒãpipããã€ã³ãããŠã€ã³ã¹ããŒã«ããããšã§ãã
ãã®æ©èœããªãã·ã§ã³ã«ã§ããªãã®ã¯ãªãã§ãããåé¡ã¯çºçããŸããããåŒæ°ãªã©ã§æå¹ã«ã§ããŸãã
ã§ããã å€æŽãå ã«æ»ãçç±ã¯ããªããã¢ãŠããå€æŽã«é¢ãããã£ãŒãããã¯ãåãåãæéããªãã£ãããã§ãã ããã容æã«ããããã®æ°ãããã©ã°ïŒ--use-featureããã³--deprecated-featureïŒããããŸããã誰ãããã®ã³ã³ããã¹ãã§æ©èœãåå®è£ /åå°å ¥ããå¿ èŠããããŸãã
倧ãŸãã«èšã£ãŠãããã§ããããããšã¯æ¬¡ã®ãšããã§ãã
åé¿çã¯ããã€ãŒã«ããã«ããïŒãã«ãããã¯ãšã³ããçŽæ¥äœ¿çšããŠïŒãpipããã€ã³ãããŠã€ã³ã¹ããŒã«ããããšã§ãã
ç§ã¯äœåãªãã«ãã¹ããããªãã§èããŠããŸããã ããããPythonãæåããMakefileã«çžåœãããã®ãªãã§éããããšãã§ãããšã¯æã£ãŠãã¿ãªãã£ããšæããŸãã
æãåèã«ãªãã³ã¡ã³ã
ãã¬ãŒã¿ãŒïŒããã§ã¯ãããŸããã§ããã