ãã®åé¡ã¯ãããªãŒå€ã®ãã«ããé¢é£ããåé¡ãããã³èãããã解決çã«é¢ããè°è«ãçµ±åããè©Šã¿ãšããŠéããŸãã
ãã®æ©èœã解決ããåé¡ã¯äœã§ããïŒ
ããŒã«ã«ãã£ã¬ã¯ããªãããããžã§ã¯ãããã«ãããå Žåãpipã¯æåã«ããããäžæçãªå Žæã«ã³ããŒããŸãã
ãã®ã¢ãããŒãã¯ãæéã®çµéãšãšãã«å€ãã®åé¡ãåŒãèµ·ãããŸããã
ãã«ãããåã«pipãäžæãã£ã¬ã¯ããªã«ã³ããŒããã®ã¯ãªãã§ããïŒ èŠåïŒããã¯ç§ã«ã¯ããããŸãã-ãããŸã§ã«åéãããã®ã¯æ¬¡ã®ãšããã§ãïŒ
å¯èœãªè§£æ±ºç
è¿œå ã®ã³ã³ããã¹ã
sdistãä»ãããã«ãã«é¢ãã詳现ã«ã€ããŠã¯ã
ãããããã¯ãšã³ãã®èŠ³ç¹ããèŠããšããããªãŒå€ã®ãã«ãããšããèãã¯å®éã«ã¯ç¡æå³ã§ãã ããã¯ãšã³ãã«ã¯ãããã»ã¹ã®çŸåšã®ãã£ã¬ã¯ããªã®åœ¢åŒã§ããœãŒã¹ããªãŒããäžãããããã«ããå®è¡ããããã«æ±ããããŸãã ãã®ãã£ã¬ã¯ããªãsdistããæœåºãããã®ããVCSãããã§ãã¯ã¢ãŠããããã®ããä»ã®å Žæããã³ããŒãããã®ããç¥ãæ¹æ³ã¯ãããŸããã å®è¡ã§ããã®ã¯ãã«ãã ãã§ãããã«ãã«å¿ èŠãªãã®ããªãå Žåã¯ã倱æãå ±åããŠãã ããã
ãã®ãããèãããã解決çã¯ã»ãšãã©ãããŸããïŒ3ïŒIMO-ããã¯ãšã³ãã«ã¯ã€ã³ãã¬ãŒã¹ãã«ããšã¯äœããšããæŠå¿µããªãããããã®ãããªãã«ããå®å šãã©ããã¯ããããŸãã1 ã
ïŒ2ïŒã«é¢ããŠã¯ãç§ã¯äžè¬çã«ãã®ãããªè¿œå ã®ãªãã·ã§ã³ã«å察ããŠããŸãã æåã®æ¹æ³ãããã£ãŠããå Žåã¯ãããè¡ãå¿ èŠããããŸããããã§ãªãå Žåã¯ãåé¡ããŠãŒã¶ãŒã«æž¡ãããšã¯ç¹ã«ãã¬ã³ããªãŒãªãªãã·ã§ã³ã§ã¯ãããŸããã ããã§ã®åé¡ã¯éåžžã«åŸ®åŠãªã®ã§ãæ£ããéžæãäœã§ããããç¥ã£ãŠãããŠãŒã¶ãŒã¯ã»ãšãã©ããªããšæããŸãããã®ããã2ã€ã®ãªãã·ã§ã³ãè©Šããç²ç®çã«ãæ©èœãããã®ã¯äœã§ããã䜿çšããŠãããŠãŒã¶ãŒãããå¯èœæ§ããããŸãã ãŸãããµããŒããžã®åœ±é¿ã¯éèŠã§ãããªãã·ã§ã³ãæäŸããããšã¯ããã«ãçµæãå°ãªããšãããã€ãã®ã±ãŒã¹ã§ç°ãªãããšãæåŸ ããŠããããšãæ確ã«æå³ããŸããããã§ã¯ãéããæåŸ ã©ããã§ããããšãã©ã®ããã«ãã¹ãããŸããïŒ ã€ã³ãã¬ãŒã¹ãã«ããã©ã°ãå¿ èŠã«ãªããã©ããã«ã€ããŠãŠãŒã¶ãŒãæè²ãã責任ããããŸããïŒããã¥ã¡ã³ããä»ããŠããŸãã¯ã©ã¡ãã䜿çšãããããããªããŠãŒã¶ãŒã«ãã£ãŠæèµ·ãããåé¡ã®çµæãšããŠïŒïŒ
ããã¯èšã£ãŠããç§ã¯ããããåã«é©åãªå Žæã«æ§ç¯ããããšã«å察ããŠããŸããã ç§ãã¡ãããããªãçç±ã¯ãåã®ãã«ãããæ®ã£ãã¢ãŒãã£ãã¡ã¯ãã次ã®ãã«ãã§äœ¿çšãããããç°ãªããªãã·ã§ã³ã§ãã«ããããå Žåãããããã ãšæããŸãïŒããšãã°ããããã°ã¢ãŒãã§ãã«ãããããªããžã§ã¯ããã¡ã€ã«ããªãªãŒã¹ãã«ãã«ãªã³ã¯ãããŠããåãããªãŒããå®è¡ãããŸãïŒã ãã ããããã¯ãšã³ãã¯ãã®ãããªåé¡ãçºçããªãããã«ããå¿ èŠããããšèšãã®ã¯åççã§ããçºçããå Žåãããã¯ããã¯ãšã³ãã®ãã°ã§ããããããé²åŸ¡ããããšããã®ã¯ãããã§ã¯ãããŸããã ãã ãããã®ãããªã¹ã¿ã³ã¹ããšãããšãç¹ã«ãŠãŒã¶ãŒãã¬ã³ããªãŒã§ãããã©ããã¯ããããŸãããããã¯ãã€ã³ã¯ãªã¡ã³ã¿ã«ãã«ãã®ãããã¯ã«é¢ããPEP 517ã®è°è«äžã«åºãŠãããã®ã§ãããåœæã¯å»¶æãããã»ã©ç©è°ãéžããŠããŸããã
ç§ã®å¥œã¿ã¯ãé·ãéãsdistãäœæãããããããã€ãŒã«ãäœæããããšã§ããïŒãªãã·ã§ã³1ïŒã ãããã®æ§ç¯ã¯åé¡ãããŸãããïŒäžèšã®ããã«ãããã¯ãšã³ãããã®éç¥ã¯æåŸ ã§ããªããããå®å šã§ããããšã«åæã§ããå ŽåïŒãã³ãã¥ããã£ãå¿ èŠã«ãªããšæããŸããããåºãæå³ïŒããã¯ãšã³ããpip /ããã³ããšã³ãããšã³ããŠãŒã¶ãŒïŒãæã¡ç ãããã®è°è«ã
1ãã¡ãããPEP 517ãæŽæ°ããŠããã¢ãŠããªãããªãŒããã«ãã§ã¯ãªããã€ã³ãã¬ãŒã¹ããœãŒã¹ããªãŒãæ§æãããã®ã
ãœãªã¥ãŒã·ã§ã³4.ïŒpipãåžžã«ã€ã³ãã¬ãŒã¹ã§ãã«ãããããã«å€æŽïŒããã³5.ïŒpipãããã©ã«ãã§ã€ã³ãã¬ãŒã¹ã§ãã«ãããããã«å€æŽããããªãŒå€ã§ãã«ããããªãã·ã§ã³ãè¿œå ïŒãè¿œå ããŸããã
次ã®çç±ã§ãsdistïŒãœãªã¥ãŒã·ã§ã³1ïŒãä»ããæ§ç¯ã«é¢ããææ ãæ··ããåã£ãŠããŸãã
UnsupportedOperation
ã«å¯ŸããŠbuild_sdist
UnsupportedOperation
ã調éã§ããããã«ãªã£ãŠããŸãããã£ã¹ã«ãã·ã§ã³ã«é¢ãããã®
ç§ã¯ã解決ç3ã®éçãæçœãšã¯ã»ã©é ãããšã«åæããŸãã
ãŸããå¯èœã§ããã°ãè¿œå ã®ãªãã·ã§ã³ãé¿ããã¹ãã§ããããšã«åæããŸãã
ãŸãããªã³ã¯ããããã£ã¹ã«ãã·ã§ã³ã¹ã¬ããã§ã€ã³ãã¬ãŒã¹ãã«ããæ¯æãã声ãããã€ããã£ãããšã«ã泚æããŸããããã®ã¢ãããŒããæ€èšããå Žåã¯ããã®ç¹å®ã®äž»é¡ã«çŠç¹ãåœãŠãã³ãã¥ããã£ãã£ã¹ã«ãã·ã§ã³ãå¿ èŠã§ãã
- sdistãæå®ã®äœçœ®ã«æ§ç¯ããäžæçãªå Žæã§sdistãé梱ããŠãããããæ§ç¯ããŸãã
ããã¯è¯ãã¢ãããŒãã ãšæããŸãã
IMOã®å¯èœæ§ã¯ãããã¯ããŒã«ã«ãã£ã¬ã¯ããªãå«ãã»ãšãã©ã®pip install
å®è¡ã§åäžã®ããã±ãŒãžã«å¯ŸããŠå®è¡ãããããšã§ã-æãäžè¬çã«ã¯pip install .
ãæ³åããŸãã ããã¯ãããã±ãŒãžéçºã¯ãŒã¯ãããŒã®äžéšãšããŠè¡ãããå¯èœæ§ããããŸãã
ãã®åäœã¯æ¬¡ã®ããã«ãªããŸãã
local-dir-> sdist-> Wheelãå®è¡ãããšãè¿œå ã®åŒã³åºãã»ããããããŸãã ãã ããç¹ã«éçºäžã«ãçæãããsdistãæ£åžžã§ããããšãæ€èšŒããããšã¯åççã ãšæããŸãã toxã¯ãã§ã«ã¯ãŒã¯ãããŒã®äžéšãšããŠãããè¡ã£ãŠããŸããããã§ãsetuptoolsã®ããŸã䜿ãã«ããã€ã³ã¿ãŒãã§ãŒã¹ãã«ããŒãããããã§ã¹ãã確èªããŠãã ããã
å šäœãšããŠãããŒã«ã«ãã£ã¬ã¯ããªãæå®ããå Žåã®sdistã®æ§ç¯ã³ã¹ãã¯ããããžã§ã¯ãã§ã®ãã®ãããªãšã©ãŒãé²ãã®ã«ååãªäŸ¡å€ããããšæããŸããç¹ã«ãããŒã«ã«ãã£ã¬ã¯ããªããã€ã³ã¹ããŒã«ãã人ã¯ããããžã§ã¯ãèªäœã®éçºè ã§ããå¯èœæ§ãé«ãããã§ãã
å±éã«é¢ããŠã¯ãïŒ6536ãã©ã®ããã«çºçããããåŸ ã¡ãããšæããŸãã 転éã§ããããã€ãã®ããšã確å®ã«åŠã³ãŸãã
sdistãæ§ç¯ããŠè§£åããã€ã³ã¹ããŒã«ããããããsdistã䜿çšããã«ã€ã³ãã¬ãŒã¹ã§ãã«ã/ã€ã³ã¹ããŒã«ããïŒã€ãŸãã setup.py install
ãŸãã¯setup.py bdist_wheel
ãŸãã¯PEP 517ããã¯ãšã³ãã§build_wheel
ãåŒã³åºãïŒæ¹ã奜ãã§ããããããã ç§ã®å
·äœçãªçç±ã¯æ¬¡ã®ãšããã§ãã
setup.py install
ä»ããŠïŒã local-dir-> installedãã移åããããŠãŒã¶ãŒã¯pip install local-dir
å®è¡ã§ããŸãã local-dir-> sdist-> installãã移åããããŠãŒã¶ãŒã¯ãèªç±ã«sdistãäœæããŠããã pip install ./path/to/sdist
å®è¡ã§ããŸãã sdistãæ§ç¯ã§ãã代æ¿ããŒã«ã¯ãããããããŸããããã¯ãPyPIã«ã¢ããããŒããããã£ã¹ããªãã¥ãŒã·ã§ã³ãæäœãããªãéãããŠãŒã¶ãŒããã§ã«æã£ãŠããå¯èœæ§ãé«ããã®ã§ããpip install local-dir
å®è¡ã§ããŸãã ãªãã·ã§ã³ã®ãªããŠãŒã¶ãŒã¯ãåäœãå¶åŸ¡ããããã®ãªãã·ã§ã³ãpipã«èŠæ±ããããä»ã®æ¹æ³ã§ã¯å¿
èŠã®ãªãå¥ã®ããŒã«ãèŠã€ããå¿
èŠããããŸããã¢ãããŒãã«é¢ä¿ãªããã€ã³ãã¬ãŒã¹ã§è¡ãããšã§ç§ãç®ã«ããå¯äžã®åé¡ã¯ãsetuptoolsãã«ãïŒããã¯ã¬ã¬ã·ãŒããã³PEP 517ã«åœãŠã¯ãŸããšæããŸãïŒã®å Žåããããžã§ã¯ããã£ã¬ã¯ããªã«.egg-info
ãã誀ã£ãŠããŸãããšã§ãããã®ãã£ã¬ã¯ããªã§python -m pip
ããŠ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ãä»ããŠã€ã³ã¹ããŒã«ããã·ã§ã«ã¹ã¯ãªããããããŸãã æ©æ¢°ã¯ãã¹ãŠãäœæ¥ããªãŒå
ã«æ§ç¯ãããããšãæåŸ
ããŠãããå€éšã«æ§ç¯ãããå Žåã¯å®éã«ã¯ããŸãæ©èœããŸããã ãããç§ãã¡ã®åŽã®åé¡ã軜æžããããã«ïŒäžç·ã«ïŒã§ããããšã§ãïŒ
$TMPDIR
ç°å¢å€æ°ãèšå®ããŠãRPMã¹ã¯ãªãããäºæããå Žæã«é
眮ããŸãïŒã€ãŸãã export TMPDIR=%{_builddir}/.tmp
ïŒããã³äœæïŒïŒpip wheel
ã--no-clean
ãªãã·ã§ã³ãšãšãã«äœ¿çšããŠãã³ããŒããããœãŒã¹ã$TMPDIR
find %{buildroot} -iname '*.so' -print0 | xargs --no-run-if-empty -0 -n1 /usr/lib/rpm/debugedit -b "%{_builddir}/.tmp/pip-req-build-"* -d "$PWD"
$TMPDIR
æåã§ã¯ãªãŒã³ã¢ããããŸããïŒ3çªç®ã®ã¹ãããã¯ãå®è£ ã®è©³çŽ°ãå€ããããããç¹ã«å¥œãã§ã¯ãããŸããã
/usr/lib/rpm/debugedit
APIãšå ŽæïŒããã³ååšïŒpip-req-build
ååpipãåžžã«é©åã«æ§ç¯ãããå ŽåããŸãã¯ãã®ããã®ã³ãã³ãã©ã€ã³ã¹ã€ãããããå Žåãåé¡ã¯è§£æ¶ãããŸãã
ããŠã³ã¹ããªãŒã ã¬ããŒãïŒ https ïŒ
sdistãã«ããã¹ãããããŠããªãŒå ãã«ããçŽæ¥å®è¡ãããšããã¢ã€ãã¢ã¯ãããã©ã«ãã§pipãæ¡çšããããè¯ãã¢ãããŒãã§ãããlocal-dir-> sdist-> wheelãå®è¡ããããšããªãããšã«åæããããã«ãªããŸããã
ãŸããã€ã³ãã¬ãŒã¹ãã€ãŒã«ãã«ããè¡ããšããã¢ã€ãã¢ãåãå ¥ããåŸåã匷ãŸã£ãŠããŸãã ç§ã®æ®ãã®äºçŽã¯æ¬¡ã®ãšããã§ãã
...ãããŠãã¡ãã誰ãããã®å€æŽãå®è£ ããPRãæžãå¿ èŠããããŸãïŒãã¹ããããã¥ã¡ã³ããªã©-éåžžã®ãã®ã§ïŒããã§ãªããã°ç§ãã¡ãããŠããã®ã¯è©±ããŠããã ãã§ãð
ããã¯ãšã³ãããæ£ãããåäœããããšã«äŸåããŸããããšãã°ã以åã®ãã«ãã®æ®ãã®ããŒã¿ã«åºã¥ããŠç°ãªãçµæãåŸãããªããªã©ã§ãã ç§ã¯ãã®ä»®å®ãããããšã¯åé¡ãããŸãããããpipãç§ã®ãã€ãŒã«ãééã£ãŠæ§ç¯ããããšäººã ã«èšããå§ãããããããã¯ãšã³ãã®åé¡ã§ããããšããããã ãã§ãããã°ããå¿ èŠãããå ŽåããµããŒãã³ã¹ããå¿é ã§ãã
ãã¯ãªãŒã³ãªãããã¯ãå«ããããã«PEP517ã€ã³ã¿ãŒãã§ã€ã¹ãæ¡åŒµããããšã¯çã«ããªã£ãŠããŸããïŒ ãšã«ãããä»ã®è©Šã¿ãå¯èœã«ããããã®ãã€ã³ããšããŠããããããããå¿ èŠã§ãïŒããšãã°ãç·šéå¯èœãªã€ã³ã¹ããŒã«ã®å®è£ ãPEP 517ããââãžã§ã¯ãããã«ãããããã±ãŒãžéçºããŒã«ã®ãã«ãïŒã pipã¯ããã§ãããåŒã³åºããŠãããªãŒå ãã«ããå®è¡ããåã«ãžã£ã³ã¯ãæ®ã£ãŠããªãããšã確èªã§ããŸãã
ãã¯ãªãŒã³ãªãããã¯ãå«ããããã«PEP517ã€ã³ã¿ãŒãã§ã€ã¹ãæ¡åŒµããããšã¯çã«ããªã£ãŠããŸããïŒ
å€åïŒ ããããpipãèªåçã«clean
åŒã³åºãå Žåãã€ã³ã¯ãªã¡ã³ã¿ã«ãã«ããªã©ãè¡ãããã«ããããªãããšãæãã§ãã人ãå¿
ãããŸãã ãããŠãç§ãã¡ã¯å¥ã®ãªãã·ã§ã³ã«è¡ãçããŸãã
ç§ã®åŸåã¯ããã€ã³ãã¬ãŒã¹ãã«ããæ£ããæ©èœããããšãä¿èšŒããã®ã¯ããã¯ãšã³ãã®è²¬ä»»ã§ãããšæ³å®ã§ããå¿ èŠãããããšããç§ã®ç«å Žã«åºå·ããããšã§ãã ãããåãå ¥ããããªãããšãå€æãããšããŠãããããæ©èœããªãçç±ã®å ·äœçãªäŸãå ¥æããããšã¯ãåã«æšæž¬ããã®ã§ã¯ãªããåé¡ã«ã€ããŠäœããã¹ãããããããç解ããã®ã«åœ¹ç«ã¡ãŸãã
- ããã¯ãšã³ãããæ£ãããåäœããããšã«äŸåããŸããããšãã°ã以åã®ãã«ãã®æ®ãã®ããŒã¿ã«åºã¥ããŠç°ãªãçµæãåŸãããªããªã©ã§ãã
ãããæ瀺çãªèŠä»¶ã«ããããã«ãPEP-517ãæ¡åŒµããããšæããŸãã
ãããæ瀺çãªèŠä»¶ã«ããããã«ãPEP-517ãæ¡åŒµããããšæããŸãã
ããã¯ãã§ã«ãããèšã£ãŠããŸãïŒ
ããã¯ãšã³ãã¯ãäžéã¢ãŒãã£ãã¡ã¯ãããã£ãã·ã¥ã®å ŽæãŸãã¯äžæãã£ã¬ã¯ããªã«ä¿åããå ŽåããããŸãã ãã£ãã·ã¥ã®æç¡ã«ãã£ãŠããã«ãã®æçµçµæã«é倧ãªéããçããããšã¯ãããŸããã
ããã¯ãšã³ããæå³çã«ãã®èŠä»¶ã«éåããå¯èœæ§ã¯ããã»ã©é«ããããŸããããŠãŒã¶ãŒã¯èªç¶ã«åé¡ãpipã®åé¡ãšããŠå ±åããããã¯ãšã³ããããžã§ã¯ãã«ãªãã€ã¬ã¯ãããããããå°ãäœåãªãªãŒããŒããããçºçããŸãã
Fedoraã®åé¿çãèŠã€ããããšãããšã httpsïŒ//github.com/pypa/pip/issues/7872ã«èŠèãããŸãã
ïŒ7731ãšãã®ä»²éãã¡ãšã®ã.egg-infoin cwdãã®åé¡ã解決ããã®ã§ããããé©åã«æ§ç¯ãããšãã«å¿é ããããšã1ã€å°ãªããªããŸãã
ãã®ããããªãã·ã§ã³4ïŒåžžã«ã€ã³ãã¬ãŒã¹ã§ãã«ãïŒãïŒ7882ã§å®è£ ãããŸããã
çŸåšïŒïŒ7951ã«åŸã£ãŠïŒpipã®ããŒã¿ãªãªãŒã¹ã§ããpip20.1b1ãå ¬éããŠããŸãã ãã®ãªãªãŒã¹ã«ã¯ããã®åé¡ã®è§£æ±ºçãå®è£ ããïŒ7882ãå«ãŸããŠããŸãã
ãã®å·ã®åå è ãããŒã¿çããã¹ãããæ°ãããã°ããã§ãã¯ããããšã§ç§ãã¡ãå©ããŠãããããšãé¡ã£ãŠããŸãã ç«ææ¥ã®ã¡ã€ã³20.1ãªãªãŒã¹ã®åã«ãæœåšçãªåé¡ãç¹å®ããŠè§£æ±ºããããšæããŸãã
ãŸãããã€ã§ãŒã€ãä»ã¯ããŸãæ©èœããŠããïŒããšããè¯å®çãªãã£ãŒãããã¯ãæè¿ããŸãã åæ§ã«ã課é¡è¿œè·¡ã·ã¹ãã ã¯éåžžã課é¡ãã§ãã£ã±ããªã®ã§ã :)
ç§ãã¡ã¯å®å šã«Fedoraã§ãã¹ãããäºå®ã§ãïŒã³ã¡ã³ãã®åã«ãã§ã«èšç»ããŠããŸãïŒããç«ææ¥ã®ç· ãåãã¯ããããçŸå®çã§ã¯ãããŸããã
@hroncok Fedoraããããã®å€æŽããã¹ãã§ããããã«ãªãææãŸã§ã«
æææ¥ã¯ãªããšãé 匵ããŸãããçŽæã¯ã§ããŸããã
確ãã«ã20.1b1ã¯ç§ãã¡ã®åé¡ã解決ããŸãã
https://mail.python.org/archives/list/[email protected]/message/5EAUIYYIRKXEHTAG5GQ7EJHSXGZIW2F7/ã®ããäžè¬çãª20.1b1ãã£ãŒãããã¯
ããïŒ ããŒã¿ç@hroncokããè©Šãããã ãããããšãããããŸãã ãšãŠãæé£ãïŒ ^> ^
ãã«ãã€ã³ãã¬ãŒã¹ã®çµæã®1ã€ïŒPythonã®è€æ°ã®ããŒãžã§ã³ã®ãã€ãŒã«ã䞊è¡ããŠïŒmanylinux dockerã³ã³ãããŒå ã§ïŒãã«ãããŠããŸããã ã€ã³ãã¬ãŒã¹ãã«ãã§ã¯ãç°ãªãããŒãžã§ã³ã競åããããã䞊åãã«ãã¯æ©èœããŸããã ããªãŒå€ãã«ãã§ã¯ãåããŒãžã§ã³ãåå¥ã®ããªãŒãäœæããåé¡ã¯ãããŸããã§ããã
@mantheyãã®è°è«ã¯ïŒ8168ã®äžã«ãããŸã
ã§ãããããã10æ¥ä»¥äžçµã¡ãŸããã å€æŽã«é¢ããŠããã€ãã®åé¡ãæèµ·ãããŸããïŒãã¹ãŠç§ãèšããšäºæ³ãããŠããŸãã-ïŒ8165ãïŒ8168ãïŒ8196ïŒã å€åã圌ããå©ããŠãããšã¯ã£ãããšè¿°ã¹ãŠãã人ã ãããŸããã
bdist_wheel
ã¯--bdist-dir
ããããŸãããããã§ã.egg-info
ãæžã蟌ã¿ãŸãå Žæã«ã€ããŠã¯ãhttpsïŒ//github.com/pypa/setuptools/issues/1816ãhttpsïŒ//github.com/pypa/setuptools/issues/1825ãåç
§ããŠãã ããã ãããã£ãŠãpipãæ£ããåäœããããã«ãªã£ãã®ã§ãããšãã°ãsetuptoolsããœãŒã¹ãã£ã¬ã¯ããªã«è§Šããã«ãã«ããå®è¡ãããªãã·ã§ã³ãé²åãããŠããã®ãªãã·ã§ã³ãå¶åŸ¡ããããã«PEP 517ã®å€æŽãå¿
èŠãã©ããã確èªããããã«ãè°è«ãå€ããããšãã§ããŸããã ããç§ã¯å£ãããããªå€æŽã¯å«ãã§ãããããã¯è»œãè¡ãããŠããªãã£ãã®ã§ãç§ã¯å人çã«ãããç¶æããåŸåããããŸãã
ç§ã¯ãæ°ããæ¯ãèãããããã®æ¯ãèãããæ£ãããã確ãã«ç°ãªã£ãŠãããæããã«å Žåã«ãã£ãŠã¯ç°ãªã£ãŠå£ããŠããããšã«åæããŸããããã®ããã«ãã¬ãŒãã³ã°ããããšã¯æ£ãããªããšæããŸãã ããã¯ãå£ãããŠãŒã¶ãŒã®1ã€ã®ã»ãããšå¥ã®ã»ããã®ãã¬ãŒããªããè¡šããŠããŸããã©ã¡ãã®å Žåããå®è¡å¯èœãªåé¿çããããŸãã
ç§ã¯ãã®å€æŽãããŒãžããããããçºçããã®ãèŠéããŠããããå察ããŠããŸããïŒãããŠãããŒãžããããšã§ãç¹å®ã®çš®é¡ã®å£ããããã±ãŒãžãå€§å¹ ã«é²ãã®ã«åœ¹ç«ã€åŒ·å¶é¢æ°ãšããŠpipã䜿çšããããã«ãªããšæããŸãïŒã ããã¯èšã£ãŠããããã§å ã«æ»ãããšãæ£ãããã©ããã¯ããããŸããã åäœãé »ç¹ã«ããªãããããããããšããŠãŒã¶ãŒã¯ããã«æ··ä¹±ããå¯èœæ§ããããŸãã å ã«æ»ãå Žåã¯ãããã«è¡ãå¿ èŠããããŸããããã§ãªãå Žåã¯ãçŸåšã®åäœãè¯ããæªãããªãå¯èœæ§ããããŸãã
pip wheel <localdir>
ãšpip install <localdir>
ãcd <localdir> ; setup.py bdist_wheel
ã¯ç°ãªããã€ãŒã«ãçæããåã«ãã·ã³ããªãã¯ãªã³ã¯ãååšããå Žåã«æ¬ èœããŠãããã¡ã€ã«ãç°ãªãããããæ£ããããšããçšèªã䜿çšããŸããïŒïŒ 3500ïŒããŸãã¯setuptools_scmïŒïŒ7549ïŒã httpsïŒ //github.com/pypa/pip/issues/7555#issuecomment -595180864ãïŒ6276ããŸãã¯ãã¬ãŒã³ãšã©ãŒã®ããå¥ã®ããŒãžã§ã³ã ç§ã¯pip20.1ããã®ãããªæªããã€ãŒã«/ã€ã³ã¹ããŒã«ãçæãããšã¯æããªãã®ã§ããã®æå³ã§ããã¯ç¢ºãã«ããæ£ãããšä¿¡ããŠããŸãã
ãã¡ãããå€æŽã«ãã£ãŠäžéšã®ã¯ãŒã¯ãããŒãç Žæããããšã¯ããã£ãŠããŸããããã£ãŒãããã¯ãåŸãããã®ã§ããã¬ãŒããªããåè©äŸ¡ããå ã«æ»ãããå®å šã«ç¢ºèªããå¿ èŠããããŸãã
ãããŠãããã§ãsetup.py sdist && pip install dist/*.tar.gz
ãšã¯ç°ãªããã€ãŒã«ãçæã§ããŸãã
ç§ã®ææ¡ã¯ãPRãå ã«æ»ããæåã«sdistãã·ã£ããã«ããŠãããçµæã®sdistãããã€ãŒã«ãäœæããããšã«ãã£ãŠä¿®æ£ãå®è£ ããããšã§ãã
ããã«ããããããžã§ã¯ããsdistãæ£ããæ§ç¯ã§ããªãå Žåãã€ãŸãIMOã解決ãã¹ãéèŠãªãŠãŒã¹ã±ãŒã¹ã§ã¯ãªãå Žåãé€ããŠããã¹ãŠã®æ£ç¢ºæ§ã®åé¡ã解決ãããã¯ãã§ãã
ããã§ã®ãã¬ãŒããªãã¯ããããé ããªããšããããšã§ãã ãã ãããããå®è£ ããããPEP 517ã€ã³ã¿ãŒãã§ã€ã¹ãããã«æ¹è¯ããŠãé«éåãå¯èœã«ãããªãã·ã§ã³ã®APIãè¿œå ã§ããŸãã ããã§ãããã®å€æŽã»ã©éããªãããšã¯ãªãã§ãããããç§ãã¡ã¯ç¢ºãã«ããã«è¿ã¥ãããšãã§ããŸãã
ãã®å€æŽã¯ãã®ãŸãŸã§ã¯ããŠãŒã¶ãŒãæºè¶³ããå¯èœæ§ãäœãããã©ãŒãã³ã¹ã®äœäžãåŒãèµ·ããããšãªããæ£ç¢ºããããã«é«ããããšã¯äºå®äžäžå¯èœã«ãªããŸãã ãããããããæ£ããããŠããããã©ãŒãã³ã¹ãåäžããããšãäž¡è ãæºè¶³ããã幞ããªäžéç¹ã«å°éããããšãã§ããŸãã
å€ãæ Œèšãèšãããã«ãæåã«ãããæ£ãããã次ã«ãããéãããŸãã ç§ã¯ãã®PRã§ç§ãã¡ããããéããããããæ£ããããç§ãã¡ã®èœåãç· ãåºããã®ã§ã¯ãªãããšæããŠããŸãã
ç§ã¯ãŸã sdistsã®æ€èšŒãæãŸããããpipã®ã€ã³ã¹ããŒã«æã«ã¯ããã§ã¯ãªãããšã«åæããŸãã å€åããã¯å°æ¥ã®sdistãã«ããŒããŒã«ãŸãã¯pipãã«ãã³ãã³ãã®æ©èœã§ãã
ãŸãã setup.py sdist
ã¯ããŒã«ã«ãã£ã¬ã¯ããªã«.egg-infoãäœæãããããèªã¿åãå°çšã®ãœãŒã¹ãã£ã¬ã¯ããªãŸãã¯åæãã«ãã§å ±åãããåé¡ã¯æ®ããŸãã
ãããpipã®ã€ã³ã¹ããŒã«æã«çºçããªãå Žåãä»ã®èª°ãã®pipã®ã€ã³ã¹ããŒã«æã«æ©èœçã«ã¯çºçããŸããã ãããã¹ããããããšããããšã¯ããããžã§ã¯ããVCSããã€ã³ã¹ããŒã«ãããããã±ãŒãžã«é²ãããšãã§ããè€æ°ã®ãã¹ãããããšãæå³ãããã¹ãŠã®ãã¹ãéãã®å¥ã®ãã£ã³ã¹ã§ãã ããã¯æ°ããããšã§ã¯ãããŸãããåºæ¬çã«ãã€ã³ã¹ããŒã«ãã¹ãå€æŽãããã¹ãŠã®ãªãã·ã§ã³ã¯ãæãå³å¯ãªãããžã§ã¯ãã§ãã£ãŠãããã£ã¹ã¯äžã®ãã€ãã»ãããç°ãªãããšã«ãªããŸãã 埮åŠãªéãã¯åžžã«ååšãããããã®éããæå³ããªããªãããšãé¡ã£ãŠããŸãããŸãã¯ãæåããããããæããªãããã«æ§é çã«äžå¯èœã«ããããšã§ããããã®éããåãé€ãããã«ã§ããããšãè¡ãããšãã§ããŸãã
ããã€ãã®ããã©ãŒãã³ã¹ã®åé¡ã¯ãsdistãä»ããŠãã«ãããå Žåã«å®éã«åçºããå¯èœæ§ããããŸãããããããpip <20.1ã®å Žåããã1æ¡äœããªããŸãã å®éããã®ã»ãšãã©ã¯ã .git
ã venv
ããŸãã¯sdistã«ã¯ãªãä»ã®ç¡é¢ä¿ãªããªã¥ãŒã ã®ãããã®ãã³ããŒããããšããçããããšããããããŸãã
æçµçã«pip
'ãã©ããªããã«é¢ä¿ãªããã©ã¡ããããã¹ãŠã®äººãæºè¶³ãããããšã¯ã§ããªãã®ã§ãããäžæ¹ããªãã·ã§ã³ã«ããããšã¯ã§ããŸããïŒ çŸåšã®ã¢ãããŒããç¶æããå ŽåïŒã©ã¡ããããã©ã«ãã«ãããã«ã€ããŠã¯å®éã«ã¯æèŠããããŸããïŒããŠãŒã¶ãŒãsdistãäœæããŠã€ã³ã¹ããŒã«ããããšãéžæã§ããæçµçµæã®ãã©ãŒã«ããã¯ãæäŸã§ããã¯ãã§ããããããã®ããã±ãŒãžã
ãŸãã
setup.py sdist
ã¯ããŒã«ã«ãã£ã¬ã¯ããªã«.egg-info
ãäœæãããããèªã¿åãå°çšã®ãœãŒã¹ãã£ã¬ã¯ããªãŸãã¯åæãã«ãã§å ±åãããåé¡ã¯æ®ããŸãã
ç§ã¯ïŒå°ãªããšãç°¡åãªãã¹ãã¯ç§ã«åæããŸãïŒ setuptools
ïŒ distutils
ã¯ãªãïŒã ãããããè¡ããšæããŸãããããŠãã®æ¯ãèãã¯ä»ã®å Žæã«dirãäœæããããã«æ§æå¯èœã§ãã ä»ã®ããã¯ãšã³ããšåæ§ã«ãã¯ãªãŒã³ãªsdistçæãè¡ãããã«æšå¥šã§ããã¯ãã§ãã
FWIWãgenerate-sdist-unpack-it-build-wheelã¢ãããŒãã䜿çšããå Žåãsdist-generation --egg-info
ãã£ã¬ã¯ããªãäœæ¥ãã£ã¬ã¯ããªã«ãã³ãããå¿
èŠã¯ãªããšæããŸãã generate_metadata
å Žåãšåæ§ã«ããããäžæãã£ã¬ã¯ããªã«ãã³ãããŸãã
@pradyunsgã¯setuptoolsã®å€æŽãå¿
èŠãšããŸãããïŒ ååãã§ãã¯ãããšãã sdist
ã³ãã³ãã«ã¯ã --egg-base
ãªãã·ã§ã³ãããegg_info
ãšã¯å¯Ÿç
§çã«ã .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ããã¯ããã°ãæ¢ããããªãã®ã·ã§ãŒã®ããã«æã
bdist_wheel
ã¯ãéå»ã«ãã«ããã£ã¬ã¯ããªãèªåçã«ã¯ãªãŒã³ã¢ããããããã«æ±ããããŸããã ãã®æ©èœã¯æ©èœããã¯ãã§ããä»ã®distutilsãã«ãã¯ã¯ãªãŒã³ã§ããïŒ
SConsã®å Žåã¯ãæ°ã«ãããŠãããã¡ã€ã«ãèšæ¶ãããã¡ã€ã«ã·ã¹ãã ã«ååšããŠããŠããbuild /ãã£ã¬ã¯ããªå ã®äœåãªãã¡ã€ã«ããã€ãŒã«ããçç¥ããŸãã
äžèšã®åé¡ã¯manylinuxã ãã«åœ±é¿ããããã§ã¯ãªã
ãã«ããã£ã¬ã¯ããªãèªåçã«ã¯ãªãŒã³ã¢ããããŠãåé¡ã¯è§£æ±ºããŸãããåé¡ãçºçããå¯èœæ§ãäœããªããŸãïŒããšãã°ã2ã€ã®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ã1ã€ã®ãã«ããã£ã¬ã¯ããªãå¿
èŠãšããPythonãå¥ã®ãã«ããã£ã¬ã¯ããªã§ãã«ããããŠããããšãç¥ã£ãŠããã»ã©è³¢ãå ŽåïŒ .so
ããªã³ã¯ããå¯èœæ§ã®ããNumPyããŒãžã§ã³ãªã©ãå«ãïŒã圱é¿ãåããŸããã 以åã«äœæããã¢ãŒãã£ãã¡ã¯ããå¥ã®ABIã§åå©çšããå Žåã¯ã圱é¿ãåããŸãã
ensconsããã¹ãããããšããŸãããããšã©ãŒãªãã§rsaletteããã«ãããããšãã§ããŸããã§ããã
scikit-buildããã¹ãããŠãã€ã³ã¯ãªã¡ã³ã¿ã«ãã«ããã©ã®ããã«åŠçããããã確èªããããšããŸãããã2çªç®ã®ãã«ãã§äœããããšããŠããããèªäœã«çªãåºããã _skbuild
ãã£ã¬ã¯ããªãæ¯åæåã§åé€ããŠååŸããå¿
èŠããããŸããããšã©ãŒãªãã§å®è¡ããŸãã
ãããã ç³ãèš³ãããŸããããensconsã¯æŽæ°ãããŸããããrsaletteã¯æŽæ°ãããŠããŸããã
2020幎5æ6æ¥æ°Žææ¥ã®ååŸ4æ18åãããã«ãã¹ã¿ããã¯æ¬¡ã®ããã«æžããŠããŸãã
ensconsããã¹ãããããšããŸãããããšã©ãŒãªãã§rsaletteããã«ãããããšãã§ããŸããã§ããã
scikit-buildããã¹ãããŠãã€ã³ã¯ãªã¡ã³ã¿ã«ãã«ããã©ã®ããã«åŠçããããã確èªããããšããŸãããã2çªç®ã®ãã«ãã§äœããããšããŠããããèªäœã«çªãåºããã
_skbuild
ãã£ã¬ã¯ããªãæ¯åæåã§åé€ããŠååŸããå¿ èŠããããŸããããšã©ãŒãªãã§å®è¡ããŸãã
â
ããªããã³ã¡ã³ãããã®ã§ããªãã¯ãããåãåã£ãŠããŸãã
ãã®ã¡ãŒã«ã«çŽæ¥è¿ä¿¡ããããGitHub https://github.com/pypa/pip/issues/7555#issuecomment-624867490ã§è¡šç€ºãããã httpsïŒ//github.com/notifications/unsubscribe-auth/AABSZERIEDAPUIXCPAKBBUDRQHAXRANCNFSM4KCV5MHQã®ç»é²ã解é€ããŠ
ç³ãèš³ãããŸããããensconsã¯æŽæ°ãããŸããããrsaletteã¯æŽæ°ãããŠããŸããã
æŽæ°ãããensconsã䜿çšããåªããCextã¯ãããŸããïŒ rsaletteãéžãã ã®ã¯ãããããªã¹ãã®æåã§ããããããã°ããæ°ãããªãã£ãããã§ããä»ã®äœããè©ŠããŠã¿ãŠãã ããã
rsalette
ã®å¯äžã®åé¡ã¯ãSConstructã®Environmentã«ROOT_IS_PURELIB
ãæž¡ããŠã¯ãªããªãããšã§ãã Cæ¡åŒµåã¯ãããŸããã cryptacular
ã¯å€§äžå€«ããã§ãã
ããã§ãç§ã¯ãã®å€æŽãå ã«æ»ãã¹ãã§ããããšã«åæããŠãããšæããŸãã
æ°ããåé¡ã¯äºæ³ããã¯ããã«å€§ãããšæããŸãã ãããããå ã«æ»ãããã®ç°¡åãª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ã«ããã€ãã®big-blobs-of-textãããããããŸããã ä»æ¥ã¯ããç«ã¡å»ããŸãâŠæåŸã«å人çãªã¡ã¢ãæžããŠãããšå°ãã€ã©ã€ã©ããŠããŸããŸããã æçµçã«ïŒ5599ã«ãªãããŠãŒã¶ãŒã®åŠå®çãªã³ã¡ã³ããèªãã§ãã確ãã«åœ¹ã«ç«ã¡ãŸããã§ããã
ããã«ã¡ã¯çãããç§ã¯ããã«ã€ããŠããå°ãèããŸãããããããã®åé¡ã«é¢ããç§ã®çŸåšã®èŠè§£ã§ãã
- sdistãæå®ã®äœçœ®ã«æ§ç¯ããäžæçãªå Žæã§sdistãé梱ããŠãããããæ§ç¯ããŸãã
ç§ã¯ãŸã ãããã€ã³ã¹ããŒã«/ããããã€ãŒã«ã¯æªãsdistsãæãŸããã®ã«é©åãªå Žæã§ã¯ãªããšä¿¡ããŠããŸãã ããããæªãsdistsãäœæããªããšããããã¯ãšã³ãã®è²¬ä»»ã§ã¯ãªãã§ããããïŒ ããã«ãsdistãä»ããç¡æ¡ä»¶ã®ãã«ãã¯ãé©åãªãã«ããšåããããç Žå£çã ãšæããŸãã
- æå®ã®å Žæã«æ§ç¯ããããã®pipãªãã·ã§ã³ãè¿œå ããŸãã
解決ç4ãããŸããããªãã£ãã®ã§ãç§ãæãçæçã«å¥œããªãã®ã ãããpip20.1.1ã«è¿œå ããã®ã¯ææå°æ©ã§ããïŒ
- ã€ã³ãã¬ãŒã¹ãã«ãã§ãå®å šããªå Žåã«ããã¯ãšã³ããããã³ããšã³ããšéä¿¡ã§ããããã«ãäœããã®ã¡ã«ããºã ã§PEP517ãæŽæ°ããŸãã
ãã®ãããã§ã¯ãå£ããä¿®æ£äžå¯èœãªã³ããŒããªãŒã«ãã©ãŒã«ããã¯ããå¿ èŠãããã®ã§ãç§ã¯ããã«è³æããŸããã
- ããããå€æŽããŠãåžžã«æå®ã®äœçœ®ã«æ§ç¯ããŸãã
ãããã£ãŠãããã¯ç Žå£çããããšèŠãªããã20.1.1ã§å ã«æ»ããŸãã
- ããªãŒå€ã§ãã«ããããªãã·ã§ã³ã䜿çšããŠãããã©ã«ãã§pipãã€ã³ãã¬ãŒã¹ã§ãã«ãããããã«å€æŽããŸãã
ããã¯é·æçãªç®æšã§ããããã£ãã·ã¥ãã£ã¬ã¯ããªã®æŠå¿µãšããªãŒå€ã®ãã¬ã³ããæ§ç¯ãããªãã·ã§ã³ã§ããå¯èœæ§ããããŸããïŒ
ç§ã¯CLIãªãã·ã§ã³ãç¹ã«ãã®ãããªãªãã·ã§ã³ã¯æ¬åœã«å¥œãã§ã¯ãããŸããã ããŒã«ã«FSã«ãã2ã€ã®ããã±ãŒãžããªã¹ããã1ã€ãã€ã³ãã¬ãŒã¹ã§ãã«ãããå¿ èŠãããããã1ã€ããã«ãããå¿ èŠããªãå Žåã¯ã©ããªããŸããïŒ ã©ã¡ããäžæ¹ãå®è¡ãããªãã·ã§ã³ãæäŸãããšãã©ã¡ããäžæ¹ã§ãããã«ãã§ããªãæ¢åã®ããã±ãŒãžã«ãªã£ãŠããŸããŸãã
ãŸãããããžã§ã¯ãã決å®ãäžãããšãã§ããããã®æ±ºå®ããšã³ããŠãŒã¶ãŒã«ããã·ã¥ããããšã決å®ããããã«å®å šã«ååšããçš®é¡ã®ãªãã·ã§ã³ã®ãããªåããããŸãã
sdistãä»ããŠæ§ç¯ããããšã¯ãæªãsdistãæãŸããããšã ãã§ã¯ãããŸããã 倧éšåã¯ããããžã§ã¯ããã€ã³ã¹ããŒã«ãããåã«ééã§ããããã¹ãã®å¯èœãªããªãšãŒã·ã§ã³ãæžããããšã§ãã ããã€ãã®æ¹æ³ã§ãã©ã°ãè¿œå ãããšããã®åé¡ã¯æªåããŸãããè¯ããªãããšã¯ãããŸããã
ã€ãŸããã€ã³ã¹ããŒã«ãééã§ããããã¹ããããã€ããããŸãã
段éçã«å»æ¢ãããŠããè¿œå ã®ãã¹ãããã€ããããŸãããäžè¬çã«ã¯3ã€ã§ãïŒçæ³çã«ã¯3ã€ã段éçã«å»æ¢ãããŸãïŒã ç·šéå¯èœãªã€ã³ã¹ããŒã«ããããŸãããããã«ãªããªãããšã¯ãããŸããã
sdistãŸãã¯wheelã®ãããããPyPIã«ã¢ããããŒããããããããåãããã¹ãã®äžéšã«ãªããŸã§ã€ã³ã¹ããŒã«ãããŠãããšèŠãªãããšãã§ããŸããããã¯ãäžæåæ¢ããŠå¥ã®ã³ã³ãã¥ãŒã¿ãŒã§çµäºããã ãã§ãã
ãã®ãããªè€æ°ã®ããã¹ããããå Žåã®åé¡ã¯ãæçµçãªã€ã³ã¹ããŒã«ã§äžæŽåãçºçããããšã§ãã ãããã¯åžžã«çºçãããšã¯éããŸããããé »ç¹ã«çºçããã®ã¯ç°¡åã«èŠ³å¯ã§ããã±ãŒã¹ã§ãã å€ãã®å Žåããããã®äžäžèŽã¯å€§ããããšã§ã¯ãããŸãããã倧ããããšããããŸãã
ãã®ãããªã€ã³ãã¬ãŒã¹ãã«ããè¡ã£ãŠããå Žåãåäžã®ãã¹ã«æããããããšã¯æ±ºããŠã§ããªããšå¹æçã«èšã£ãŠããŸãããã®å¥åŠãªãšããžã±ãŒã¹ã«åžžã«å¯ŸåŠããå¿ èŠããããŸããã€ã³ã¹ããŒã«ãã©ã®ããã«è¡ããããã«åºã¥ããŠã人ã ã¯ç°ãªãçµæãåŸãã§ãããã
è¿œå ã®å©ç¹ãšããŠãããã¯ãããããŒãã¹ãããããŒã§ããç¶ããããšãä¿èšŒããããã®åŒ·å¶æ©èœãšããŠãæ©èœããŸãã
ã»ãšãã©ã®å Žåã @ dstufftã«åæã
ããããç§ã¯1ã€ã®ç¹ãåãäžããããšæããŸãã
ããŒã«ã«FSã«ãã2ã€ã®ããã±ãŒãžããªã¹ããã1ã€ãã€ã³ãã¬ãŒã¹ã§ãã«ãããå¿ èŠãããããã1ã€ããã«ãããå¿ èŠããªãå Žåã¯ã©ããªããŸããïŒ
ç°ãªããªãã·ã§ã³ã䜿çšããŠã2ã€ã®ããã±ãŒãžã2ã€ã®å¥ã ã®pipã§å®è¡ããã ãã§ããïŒïŒïŒ äžæ¹ãä»æ¹ã®äŸåé¢ä¿ã§ããå¯èœæ§ãããããšã¯ç¥ã£ãŠããŸãããäžè¬çã«ã¯ããªãã®äž»åŒµãåœãŠã¯ãŸããŸããããã¹ãŠã®ã€ã³ã¹ããŒã«ã·ããªãªã1åã®ãããã«ãŸãšããå¿ èŠããããšäººã ãèããäžè¬çãªåŸåãããããã§ããåççã ãšæããŸãïŒãèŠä»¶ã®ãªã¹ãã2ã€ã«åå²ããå¿ èŠãããããããåé¡ããŠãŒã¶ãŒã«ãã£ãŠæåŠãããå Žåã®å®å šã«é©åãªåé¿çããããŸãïŒ
ïŒããïŒå ã«æ»ããšãã¯ãããªãŒå ãã«ããå®è£ ããçµæãšããŠéããããïŒ6276ã®ãããªåé¡ãå床éãå¿ èŠãããããšã«æ³šæããŠãã ããã
åé¡ã®äžéšã¯ãäŸåé¢ä¿ã解決ãããšãã«pipããã§ã«ã€ã³ã¹ããŒã«ãããŠãããã®ãèæ ®ããªãããšã§ãïŒæ°ãããªãŸã«ããŒã®äœæ¥ã«ãã£ãŠãããå€æŽããããã©ããã¯ããããŸããïŒããããã£ãŠã解決ããå Žåã¯ã1åã®pipåŒã³åºãã«ãã¹ãŠãå«ããå¿ èŠããããŸããäŸåé¢ä¿ã¯ãæ£ãããïŒçŸåšã®ãªãŸã«ããŒãæ£ããå®è¡ããç¯å²ã§ïŒã
æ°ãããªãŸã«ããŒããã§ã«ã€ã³ã¹ããŒã«ãããŠãããã®ãèæ
®ã«å
¥ããå Žåã pip install foo bar
ãšpip install foo && pip install bar
ã¯ã»ãŒçããããŸã£ããåé¡ã«ãªããŸããããããã§ãªãå ŽåïŒãããŠä»ã¯ã»ãŒåãã§ãïŒäž¡æ¹ã®ãããžã§ã¯ãããã¹ãã ãã«äŸåããŠããããfooã2æªæºãbarã1ãã倧ããå Žåãç¡å¹ãªã€ã³ã¹ããŒã«ãçºçããŸãã
ããã¯æ¥ç·ã§ãã:)
ïŒæ°ãããªãŸã«ããŒã®äœæ¥ã«ãã£ãŠãããå€ãããã©ããã¯ããããŸãããïŒïŒ
ïŒ7744ãžã®å ¥åãæè¿ããŸãã :)
- ããããå€æŽããŠãåžžã«æå®ã®äœçœ®ã«æ§ç¯ããŸãã
ãããã£ãŠãããã¯ç Žå£çããããšèŠãªããã20.1.1ã§å ã«æ»ããŸãã
æ確ã«ããããã«ãç§ãã¡ããããŸãã«ãæ©ãå±éãããããšããããç§ãã¡ãæ¡çšããå±éã¢ãããŒãã¯ããããããŸãã«ãç Žå£çã§ããããšã«ãªã£ãçç±ã®äžéšã§ãã
- æå®ã®å Žæã«æ§ç¯ããããã®pipãªãã·ã§ã³ãè¿œå ããŸãã
@dstufft @pfmooreãã®çš®ã®ãªãã·ã§ã³ã¯ãªããã€ã³ã¡ã«ããºã ã§ãããšèããŠãããããããæç¹ã§ããã©ã«ãã«ããããšãç®æšã«ããŠãŒã¶ãŒãã€ã³ãã¬ãŒã¹ãã«ãã«åããŠæ®µéçã«èª¿æŽã§ããŸãã ãã®ã³ã¡ã³ãã®ç²Ÿç¥ã§ïŒ https ïŒ
ãã®ããã®PRãæåºããŸãã :)
20.1.1ããªãªãŒã¹ãããå ã«æ»ãããå€æŽãå«ãŸããŠããŸãã
Fedoraã§ã¯ãPython RPMããã±ãŒãžããã«ããããšããç§ãã¡ã¯æç«ã§ãããã·ã³ãå®è¡ããæšæºçãªæ¹æ³ã¯
python setup.py build
ã䜿çšããããšã§ãã PEP 517ã§ã¯ã代ããã«pip wheel
ã䜿çšãããæ«å®çãªãæ¹æ³ãè¿œå ããŸããã ãã ããæ¡åŒµã¢ãžã¥ãŒã«ã§ã¯ãpipããããããã«ãããããã«äœ¿çšããããœãŒã¹ãtmpã«ç§»åãããããããã«ããããã¢ãããŒãã«åé¡ããããŸããç§ãã¡ã®ãã«ãæ©æ§ã¯ããã€ãã®ã³ã³ãã€ã©ãã©ã°ãæ¿å ¥ããŠããã®ã§ããã«ãã¢ãŒãã£ãã¡ã¯ãïŒãã®å Žåã¯
.so
æ¡åŒµã¢ãžã¥ãŒã«ïŒã«ã¯ãœãŒã¹ã«é¢ããã¡ã¿ããŒã¿ãå«ãŸããŠããŸãã åŸã§ããã«ãã¢ãŒãã£ãã¡ã¯ãããã©ããŒã¹ãããã®æ å ±ãæœåºãããœãŒã¹ã/usr/src/debug
ã«ã³ããŒããŠãç¹å¥ãª*-debugsource
RPMãä»ããŠã€ã³ã¹ããŒã«ããã·ã§ã«ã¹ã¯ãªããããããŸãã æ©æ¢°ã¯ãã¹ãŠãäœæ¥ããªãŒå ã«æ§ç¯ãããããšãæåŸ ããŠãããå€éšã«æ§ç¯ãããå Žåã¯å®éã«ã¯ããŸãæ©èœããŸããã ãããç§ãã¡ã®åŽã®åé¡ã軜æžããããã«ïŒäžç·ã«ïŒã§ããããšã§ãïŒ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
ã NSã
çŸåšã pip
ã¯install
ãbuild
ããã³install
ãšããŠå¹æçã«åŠçããŸããããã¯ããã€ããªã¢ãŒãã£ãã¡ã¯ããæ§ç¯ããã³ãã£ãã·ã¥ããèªã¿åããè¶
ããŠãã€ããªãã€ã³ã¹ããŒã«ãã人ãæãã§ããããšã§ã¯ãããŸããã -ããŠã³ãã®ã¿ãªã©ã
setup.py
ã䜿çšããŠãã€ããªãäœæãã bdist
ãäœæããã«ã pip install
ã䜿çšããæ¹æ³ãããã°ããã®ã«ãšæããŸãããä»æ¥ã¯äžå¯èœãªããã§ãã ã pip
ãšdistutils
/ setuptools
ã¯ããã€ããªã¢ãŒãã£ãã¡ã¯ãã®å Žæã«ã€ããŠåæããŠããªãããã§ãã
setup.pyã䜿çšããŠãã€ããªããã«ãããbdistãäœæããã«pipã§ã€ã³ã¹ããŒã«ããæ¹æ³ãããã°ããã®ã«ãšæããŸãããpipãšdistutils / setuptoolsãåæããŠããªããããä»æ¥ã¯äžå¯èœã®ããã§ãããã€ããªã¢ãŒãã£ãã¡ã¯ãã®å Žæã
ç§ãåŸããã©ããã¯ããããŸãã-ããªãã¯ãã€ããªã䜿çšããæ¹æ³ã欲ãããããã§ã«ååšãããã€ããªé åžãã©ãŒãããã䜿çšããããªããšèšã£ãŠããŸãã äœæ ã§ããïŒ
setup.pyã䜿çšããŠãã€ããªããã«ãããbdistãäœæããã«pipã§ã€ã³ã¹ããŒã«ããæ¹æ³ãããã°ããã®ã«ãšæããŸãããpipãšdistutils / setuptoolsãåæããŠããªããããä»æ¥ã¯äžå¯èœã®ããã§ãããã€ããªã¢ãŒãã£ãã¡ã¯ãã®å Žæã
ç§ãåŸããã©ããã¯ããããŸãã-ããªãã¯ãã€ããªã䜿çšããæ¹æ³ã欲ãããããã§ã«ååšãããã€ããªé åžãã©ãŒãããã䜿çšããããªããšèšã£ãŠããŸãã äœæ ã§ããïŒ
bdist圢åŒã¯éåžžã«å¶éãããŠããŸãã ç§ã®ã°ã«ãŒãã¯ãtarã®ãããªãã 圢åŒã«é Œã£ãŠããããéèªçã«è§£åããå¿ èŠããããŸãïŒBSDã¯ãµããŒããããŠããªããDebianã¯ãµããŒããããŠããªããªã©ïŒã
æšå€ç§ãçºèŠããã®ã¯ããã bdistã®äœ¿çšã¯pip
çµç±ã§ã¯ã€ã³ã¹ããŒã«ã§ããªããšããããšã§ãã ãã ãã€ããªã«ã¯ã pip
ãAFAICTãä»ããŠã€ã³ã¹ããŒã«ããå¿
èŠã®ããã¡ã¿ããŒã¿ããããŸãããããã§ãããããã€ãŒã«ãæ©èœãããšæããŸãã
eggãšzipãè©ŠããŸãããã file://
URIã ãã䜿çšããŠã€ã³ã¹ããŒã«ããããã«å¿
èŠãªã¡ã¿ããŒã¿ãäžè¶³ããŠããŸãã
ç§ã¯distutilsãä»ããŠãã«ããéŽã¹ãã«ããmakeã䜿çšããŠsetuptoolsããã倧ããªãã«ãã·ã¹ãã ã«ããããšããŠããã®ã§ãæšæºã®bdist
åŒã³åºãããããŸãã
https://github.com/pypa/pip/issues/2195#issuecomment -664728481ããæ¥ãŠã--use-feature=in-tree-build
åŸãã§ïŒ7882ãããçŽããŠããã£ããšèšããŸãã
ãã©ïŒ èšç»ã®ããã ïŒ
ä»åã¯--build
ã®docstringãæŽæ°ããŸãããã ;ïŒ
ïŒ2195ïŒã³ã¡ã³ãïŒããæ¥ãŠããŸãã-use-feature= in-tree-buildã®åŸãã§ïŒ7882ãããçŽããŠããã£ããšèšããŸãã
ãã®å Žåãšåæ§ã«ãã³ãã³ãã©ã€ã³ã§å¥œå¥å¿ã匷ããæã£ãŠããã®ã劥åœã ããin-tree-build
ã§ãªãã·ã§ã³ã®ã»ãããpyproject.toml
ïŒ ããã¯ãpipãã©ããããããã«bashã¹ã¯ãªãããŸãã¯makefileãäœæããå¿
èŠãªãã«ãïŒ6276ã解決ããã®ã«éåžžã«äŸ¿å©ã§ãã ïŒããã¯ç¹ã«å€§ããªåé¡ã§ã¯ãããŸãããïŒ
pyproject.tomlã§ããªãŒå ãã«ããªãã·ã§ã³ãèšå®ãããŠãã
@davidhewittããã¯ããã®åé¡ã®å
ã®èª¬æã®å€ããå°ãªãããªãã·ã§ã³3ã§ãã ç§ã®ç解ã§ã¯ãçŸåšã®ã³ã³ã»ã³ãµã¹ã¯ãå¯èœã§ããã°è¿œå ã®ãªãã·ã§ã³ãé¿ããæ¹ããããšããããšã§ãã ãããã£ãŠã移è¡æéäžã«--use-feature
ã䜿çšããŠããªãŒå
ãã«ããæå¹ã«ãããšããã¢ã€ãã¢ã¯ãããã©ã«ãã§å¯äžã®ã¡ã«ããºã ã«ãããšããé·æçãªç®æšãæã£ãŠããŸãã
ãšããã§ãç§ã¯ããã20.3ã«éã«åãããã«å®è£ ããããšã¯ã§ããŸããããããã§ããã§ããã°20.4ã§å®è£ ããã€ããã§ãã
@sbidoulãã®æ©èœã
æãåèã«ãªãã³ã¡ã³ã
https://github.com/pypa/pip/issues/2195#issuecomment -664728481ããæ¥ãŠã
--use-feature=in-tree-build
åŸãã§ïŒ7882ãããçŽããŠããã£ããšèšããŸãã