çããããã«ã¡ã¯ã
ç¶æ³
çŸåšãããã©ã«ãã®PyPIã€ã³ããã¯ã¹URLããªãŒããŒã©ã€ãããŠããã©ãŒãæãURLã䜿çšããç°¡åãªæ¹æ³ã¯ãããŸããã äŒæ¥ç°å¢ã§ã¯ãéçºè ã«ãªããžããªãã©ãŒã®äœ¿çšãèŠæ±ããããšã¯éåžžã«äžè¬çã§ãã
æ®å¿µãªãããããã¯pipenvã§ã¯ç°¡åã«å¯Ÿå¿ã§ããªãããã§ãã ãããã®ããã±ãŒãžã®ãœãŒã¹ãšããŠãã©ãŒãPipfileã«æ瀺çã«è¿œå ããããšãã§ããŸãããããã«ãã移æ€æ§ãæãªãããŸãã
ïŒçã®ïŒãã©ãŒãæå®ããããšã«ãããPyPIã€ã³ããã¯ã¹ã®å ŽæããªãŒããŒã©ã€ãããæ¹æ³ãããã¯ãã§ãã ããã¯PyPIã«ã®ã¿é©çšãããä»ã®ãµãŒãããŒãã£ãªããžããªã«ã¯é©çšãããŸããïŒãããã¯åŒãç¶ãPipfileã§æ瀺çã«æå®ãããŸãïŒã
äžè¬çãªææ¡
Dockerã¯ããŠãŒã¶ãŒãããŒã¢ã³ã®æ§æãã¡ã€ã«ã§ã¬ãžã¹ããªãã©ãŒãæå®ã§ããããã«ããããšã§ããã®ç¶æ³ã«å¯Ÿå¿ããŸãã åæ§ã«ãpipenvãŠãŒã¶ãŒãç°å¢å€æ°ãæ§æãã¡ã€ã«ããŸãã¯ã³ãã³ãã©ã€ã³ãã©ã¡ãŒã¿ãŒãä»ããŠPyPIã®ïŒçã®ïŒãã©ãŒãæå®ã§ããã°çŽ æŽããããšæããŸãã ãã®å€ãèšå®ãããŠããå ŽåãPyPIãžã®æ¥ç¶ãå©çšå¯èœã§ãã£ãŠããpipenvã¯ãã¹ãŠã®PyPIããã±ãŒãžã«ãã©ãŒã䜿çšããå¿ èŠããããŸãã äžéšã®äŒæ¥ç°å¢ã§ã¯ãPyPIã¯ãããã¯ãããªããŸãŸã§ãããããªã·ãŒã§ã¯ãäžèšã®ä»ã®çç±ã§ãã©ãŒã䜿çšããããã«æ瀺ãããŠããŸãã
å®è£ ã«é¢ããèæ ®äºé
é¢é£ããè°è«
ããã¯Freenodeã®#pythonãš#pypaã§è°è«ãããŠããŸãã 建èšçãªãããšããè¡ã£ãåŸãããã§åé¡ãéããŠè°è«ããããšã圹ç«ã€ãšå€æãããŸããã ãã®åé¡ã®è§£æ±ºã«åããçæ§ã®ãå°œåã«æè¬ããããŸãã
/ cc @uranusjr @ncoghlan @altendky @njsmith
ããã¯äžè¬çã«çºçããããšã§ãããšç§ã¯ç¢ºä¿¡ããŠããŸãïŒäŒæ¥ã®FW /ãã£ãã·ã³ã°ãããã·ïŒ-pipfileã§èŠã€ãã£ãå Žåãpypiã®ä»£ããã«äœ¿çšãããã©ãŒãæå®ããããã®ãªãŒããŒã©ã€ãèšå®ãå¿
èŠã ãšæããŸã- PIPENV_PYPI_MIRROR
ãŸãã¯PIPENV_PYPI_CACHING_PROXY
ãªã©ãæåã«è©Šãå¿
èŠãããããšãæå®ããåºæ¬çã«pypiã®åã§sources
ã«ã¹ã©ã€ã¹ããŸãã
ããã¯ç®æšãéæããŠããããã«èŠããŸããïŒ ãããããªããå®è£ ã®éç¥ã«ã¿ã°ãä»ããŠããããè¯ããæªãããæããŠãã ããïŒ@ncoghlanïŒ
泚æç¹ããå§ããŸããPyPIãPEP458ã«é¡äŒŒããããã±ãŒãžçœ²åã¡ã«ããºã ãå®è£
ããŠpip
ã«TLSã«äŸåããªãæ¹æ³ãæäŸããåç®äžPyPIããçºä¿¡ãããããã±ãŒãžãå®éã«PyPIãå
¬éãããã®ãšäžèŽããããã«ãããŸã§ã次ã«ããã©ãã£ãã¯ãå¥ã®ãµãŒããŒã«ééçã«ãªãã€ã¬ã¯ãããæ©èœãæäŸããããšã¯ãã»ãã¥ãªãã£ã®èŠ³ç¹ããçã«æžå¿µãããŸãã
æ®å¿µãªããããã®ç¹å®ã®æ»æãã¯ãã«ã¯ãã§ã«pip.conf
ãä»ããŠéãããŠããããã pipenv
ã¬ãã«ã§åçã®ãã®ãæäŸããŠãããããŸã§ä»¥äžã«æªåããããšã¯ãããŸããã
ãããè¶ ããŠãæ±çšãªããžããªã®URLæžãæãã¡ã«ããºã ã¯ãå°ãªããšãåºæ¬æ©èœå±€ã§ã¯ãPyPIåºæã®ãã®ãããå®éã«ææžåããŠèª¬æããæ¹ãç°¡åã ãšæããŸãã äœãã®ãããªãã®ïŒ
pipenv --override-source-url 'default=https://pypi-proxy.example.com/api' --override-source-url 'https://pypi.python.org/simple=https://pypi-proxy.example.com/api' --override-source-url 'https://pypi.org/simple=https://pypi-proxy.example.com/api' install
ïŒPyPIåºæã®ãããã¯ã pip.conf
ã§æå®ãããŠããããã«ããdefaultãã䜿çšããŠpipã®ããã©ã«ãã®ããŠã³ããŒããœãŒã¹ãåç
§ããããšã ãã§ãïŒã
ãã ãããœãŒã¹URLãªãŒããŒã©ã€ããããå šäœãæ¯åã¹ãã«ã¢ãŠããããšãå®éã«äœ¿çšããã®ã¯æ±ãã«ãããããCLIã·ã¥ã¬ãŒã®ããã€ãã®ãªãã·ã§ã³ã¯æ¬¡ã®ããã«ãªããŸãã
pipenv --override-source-urls <config file> install
pipenv --pypi-mirror https://pypi-proxy.example.com/api install
--override-source-url
ã¬ã€ã€ãŒãããã«å
¬éãããã©ããã¯å¥ã®è³ªåã§ããæåã«ãããåçŽãª--pypi-mirror
ãªãã·ã§ã³ãå®è£
ããåã«--override-source-url
ã®å¯èœæ§ãç¶æããæ¹ãçã«ããªã£ãŠãããããããŸãããããããŠããéãå¯èœãªéãå°æ¥ã®ãªãã·ã§ã³ã念é ã«çœ®ããŠ--override-source-urls
ã
äžè¬çãª{given URL: override URL}
ãããã³ã°ãç§ã®æåã®èãã§ããããããã«æ€èšãããšãç¹æ®ãªã±ãŒã·ã³ã°ã®PyPIã«ã¯ããã€ãã®è°è«ããããŸãã
PyPIã¯ãããç¥ãããŠãããããªãã¯URLãšå€æ°ã®ãã©ãŒãåããŠãããšããç¹ã§éåžžã«ãŠããŒã¯ã§ãã
PyPIã«ã¯å®éã«ã¯è€æ°ã®URLããããŸãïŒããšãã°ã https://pypi.python.org/simple
ãšhttps://pypi.org/simple
ã®äž¡æ¹ãããã«ã¯https://pypi.python.org/simple/
ãšhttps://pypi.org/simple/
ã®Pipfileããã°ããã®éæµ®ããã§ããå¯èœæ§ããããŸã
@njsmithç§ã®æçš¿ã®æåŸã®éšåã«ãã--pypi-mirror <URL>
ã®ç ç³ã®ææ¡ãåç
§ããŠãã ãã-æåã®å®è£
ãããã ãã«çŠç¹ãåœãŠãŠããå Žåãäžè¬çãªURLæžãæãæ©èœã¯ãå
éšå®è£
ã®è©³çŽ°ãšããŠéå§ã§ããŸãïŒã PyPI "ã«ã¯è€æ°ã®URLãããããããã¯ãã¹ãŠæçµçã«åãå Žæã«è§£æ±ºãããŸãïŒããã®åŸããã«ïŒäž»èŠãª--pypi-mirror
ã®äœ¿çšã§åžæã©ããã«æ©èœããŠããããšã確èªãããåŸïŒãããèªäœãæ©èœãšããŠå
¬éããããšèŠãªãããŸãå ŽåïŒã
ãããããã ãç§ã¯ãããéãã:-)
ã³ãã³ãã©ã€ã³åŒæ°ãããçš®ã®ããæ°žç¶çãªæ§æã«ãããã³ã°ããäžè¬çãªã«ãŒã«ã¯ãããŸããïŒ ããã®ã»ãšãã©ã®ãŠãŒã¶ãŒã¯ãäžåºŠèšå®ããŠããå¿ããããšæãã§ãããã
@ncoghlanã¯æžããïŒ
泚æç¹ããå§ããŸãããïŒPyPIãPEP 458ã«äŒŒãããã±ãŒãžçœ²åã¡ã«ããºã ãå®è£ ããŠãåç®äžPyPIããçºä¿¡ãããããã±ãŒãžãå®éã«PyPIãå ¬éãããã®ãšäžèŽããããšãä¿èšŒããããã«ãTLSã«äŸåããªãæ¹æ³ãpipã«æäŸãããŸã§ããã©ãã£ãã¯ãå¥ã®ãµãŒããŒã«ééçã«ãªãã€ã¬ã¯ãããããšã¯ãã»ãã¥ãªãã£ã®èŠ³ç¹ããçã«æžå¿µãããŠããŸãã
Pipfile.lock
ãæ£ããèªãã§ããå Žåãããã±ãŒãžãšãããã€ã³ã¹ããŒã«ããããœãŒã¹ãšã®éã«ä¿åãããé¢ä¿ã¯ãããŸããã æ¢åã®æ©èœã»ããã§è€æ°ã®ãœãŒã¹ãæå®ã§ãããšãããšãåæ§ã®åé¡ãçºçããŸãããïŒ sync
ã¯ãããã¯ãã¡ã€ã«ã®äœææã«äœ¿çšããããã®ãšã¯ç°ãªããœãŒã¹ããããã±ãŒãžãååŸããããšã«ãªãå¯èœæ§ããããŸãã
Pipfile.lock
ã¯ãåºå®ãããäŸåé¢ä¿ããšã«åãå
¥ãå¯èœãªã¢ãŒãã£ãã¡ã¯ãããã·ã¥ã®ãªã¹ããæ ŒçŽãããããããã¯ãå®è¡ãããšãããã±ãŒãžãå¯ãã«çœ®ãæããããšã¯å°é£ã§ãã ããã¯ã®çææã«ã Pipfile
ã®ãœãŒã¹ã«æ瀺çã«ãªããã€ã³ãããšãããã®ãœãŒã¹ãæ··ä¹±ããªãããã«ä¿¡é ŒããTLSã䜿çšããŠå®éã«ãã®èµ·ç¹ãšè©±ããŠããããšã確èªããŸãããšèšã£ãŠããŸãã ïŒããã§ã¯ãªãã pip
ãŸãã¯ä»ã®PyPAãªããžããªã®ããããã«ããå¯èœæ§ããããŸãããç¹å®ã®ããã±ãŒãžãç¹å®ã®ãœãŒã¹ãªããžããªã«ãã€ã³ãããå¯èœæ§ã«ã€ããŠè°è«ããŠããåé¡ããããšæããŸãïŒ
pip.conf
ã§ããã©ã«ãã®ã€ã³ããã¯ã¹URLãå€æŽããïŒãŸãã¯è¿œå ã®ã€ã³ããã¯ã¹URLãè¿œå ããïŒããæ§æãã¡ã€ã«ãŸãã¯ã·ã§ã«ãããã¡ã€ã«ããŒã¹ã®ã¡ã«ããºã ãä»ããŠããã§ææ¡ãããŠãããªãŒããŒã©ã€ãæ©èœã䜿çšããããšã¯ç°ãªããŸããããæç¹ã§ãããŒã ãã£ã¬ã¯ããªïŒsdistã®setup.pyãã¡ã€ã«ãªã©ïŒãžã®æžã蟌ã¿ã¢ã¯ã»ã¹æš©ã䜿çšããŠå®è¡ããããã®ããã±ãŒãžã®ãœãŒã¹ãä¿¡é Œããããã«èšå®ãæ§æããããšã«ããŸããã ãŸããPEP 458ã®ãããªçœ²åã¹ããŒã ã§ãããæ€èšŒã«äœ¿çšãããå
¬ééµèªäœããå€æŽããããã«ææ Œãããç¹æš©ãå¿
èŠãšãããã£ã¬ã¯ããªã§ã¯ãªããããŒã ãã£ã¬ã¯ããªå
ã®ã©ããã«æ ŒçŽãããŠããå Žåããããã®çš®é¡ã®ã·ã§ããã¬ã³ã«å¯Ÿããå®å
šãªé²åŸ¡ã«ã¯ãªããŸããã
å³æ Œãªã»ãã¥ãªãã£èŠä»¶ãæã€çµç¹ããã€ã³ã¿ãŒããããžã®ã¢ã¯ã»ã¹ãå¶éãããããã¯ããŠã³ããããµãŒããŒã§ãã«ããå®è¡ããããŸãã¯ãããã¯ãŒã¯ã¬ãã«ã§ãã®çš®ã®åé¡ãç£èŠããã®ã«ã¯ååãªçç±ããããŸã:)
è€æ°ã®ã€ã³ããã¯ã¹ã䜿çšããŠããŠãããã±ãŒãžãéãã©ã€ããªã€ã³ããã¯ã¹ããã®ãã®ã§ããå Žåããããã¯ãã¡ã€ã«ã«ç€ºãããããšã«æ³šæããŠãã ããã
pep 458ã®æžå¿µã¯ãåºæ¬çã«ç§ã念é ã«çœ®ããŠãããã®ã§ãããURLã¯ç°ãªããŸãããå®éã«ã¯pypiã®ãã€ã³ãã¯ãããŒã«ã«ã§pypiãã³ããŒããŠåãã§ãããšäž»åŒµããå Žåãšã¯ç°ãªããŸãã
ç§ããŸãã¯ããŒã ãã£ã¬ã¯ããªãžã®æžã蟌ã¿ã¢ã¯ã»ã¹æš©ã䜿çšããŠããæç¹ã§å®è¡ããä»»æã®ããã»ã¹ïŒsdistã®setup.pyãã¡ã€ã«ãªã©ïŒã¯ããã®ããã±ãŒãžã®ãœãŒã¹ãä¿¡é Œããããã«èšå®ãæ§æããããšã«ããŸããã
ãããããªãã®è
åšã¢ãã«ã§ããå Žåãpipenvãã©ã®ããã«ãããå®è¡ã§ãããã¯ããããŸããã ããŒã ãã£ã¬ã¯ããªã®èšå®ãå€æŽã§ãã人ã¯ã $PATH
ã«æ°ãããã£ã¬ã¯ããªãæ¿å
¥ããããã«åœã®pipenvãæ¿å
¥ããŠã奜ããªããšãå®è¡ããããšãã§ããŸãã
@njsmithããã¯pipã®è
åšã¢ãã«ã§ããããŸããããã¯ãããã±ãŒãžã®ã€ã³ã¹ããŒã«ã«ã¯sdist setup.py
ãã¡ã€ã«ããã®ä»»æã®ã³ãŒãã®å®è¡ãèš±å¯ãããŠããããã§ãã ãã®ã³ãŒãã¯ç¢ºãã«ãèšå®ãªã©ã®ããŒã ãã£ã¬ã¯ããªå
ã®ãã®ãäžæžããããããã¹ã«äœããè¿œå ãããããå¯èœæ§ããããŸãã ãã®ãããæ瀺çã«pypiïŒæ¢ç¥ã®ä¿¡é Œã§ããã€ã³ããã¯ã¹ïŒãç¹æš©åããããã·ã¥ãã§ãã¯ãèŠæ±ããããšã¯ãã»ãã¥ãªãã£ã«åããè¯ãã¹ãããã§ãã ããã«ãããæ¢ç¥ã®ã»ãã¥ãªãã£è
åšãéäžç®¡çããã³æé€ããããŠã³ããŒãããŠããããã±ãŒãžã®æ€èšŒãåæ£ããŠèå¥ã§ããŸãã ããŠã³ããŒãããããã¯ãã¡ã€ã«ã¯ãååŸããå¿
èŠã®ããããã·ã¥ã«ã€ããŠäœãšèšã£ãŠããŸããïŒ ã€ã³ããã¯ã¹ããååŸããŠãããã®ãšäžèŽããŸãããïŒ ãã®åäœã¢ãŒãã倱æããããã«ã¯ãè€æ°ã®ããŒã«ã«ãã·ã³ãã€ã³ããã¯ã¹ãããã³ãããã¯ãŒã¯å±€ã§é害ãçºçããå¿
èŠããããŸããããã¯ãã¢ããªã±ãŒã·ã§ã³ã¹ã¿ãã¯å
ã®è€æ°ã®ç Žæããããã±ãŒãžãé£æºããŠåäœããä¿¡é Œã§ããã€ã³ããã¯ã¹ã«å¯ŸããŠããã·ã¥ãæ€èšŒããããšã«ã€ããŠè©±ããŠããããã§ãã ããããŠå€ãã®å Žåãããã·ã¥èªäœã¯ããã«å¥ã®é¢äžããŠããªããœãŒã¹ããæ¥ãŸããã ã ããä»ãããªãã¯å°ãªããšããpipãšpipenvã®äž¡æ¹ã®ããã·ã¥ãã§ãã¯ã®ãã¹ãŠããããªããæãã§ãããã®ãšåãããã·ã¥ãçæããããã«äœããã®åœ¢ã§æ¹ãããããŠããå¿
èŠããããŸãããããã«ä»ã®æªæã®ãããã®ãã€ã³ã¹ããŒã«ããŸããïŒ
ç§ãèšã£ãŠããã®ã¯ãããŒã«ã«ãã·ã³ãå±éºã«ãããããå Žåãpipãpipenvãããªããæãããã«äœãããããšã¯ãªããšããããšã ãšæããŸãã ãã ããããŠã³ããŒãããããã±ãŒãžããæ€çŽ¢ããã¯ãã®å Žæããæ¢ããŠãããã®ã§ããããšã確èªã§ããŸããããã«ãããã»ãã¥ãªãã£ãã§ãŒã³ã®1ã€ã®èŠçŽ ãæäŸã§ããŸãã
@ncoghlan @njsmithããã¯ã sudo pip install...
ã«å察ããåããšãäžè¬çãªæå³ã§ã©ã®ããã«èæ
®ãããŸãããpipã䜿çšããå Žåã¯ããããã倧ãŸãã«èšãã°ãPythonã®ãã®ãã€ã³ã¹ããŒã«ããã·ã¹ãã ããã±ãŒãžãããŒãžã£ãŒã ããã¯å®éã«ã¯pipenvã®è³ªåã§ã¯ãªããããããŸããããããã¯çŸåšè°è«ãè¡ãããŠããå Žæã§ãããããã次ã®ã¹ããããå°ããããããŸãã...
@techalchemyãã®ãããã¯ãšã®é¢é£æ§ã¯ãŸã£ããããããŸãããïŒ äžèšã®ãã¹ãŠã®çµè«ã¯ããŠãŒã¶ãŒãPyPIã«äœ¿çšãããã©ãŒpipenvããªãŒããŒã©ã€ãã§ããããã«ããŠããè¿œå ã®è
åšã¯çºçããªããšæããŸãããŸãã sudo pipenv
ãå®è¡ããŠããããããæå³ããããŸããã
@njsmithãããç§ã¯èª°ãsudo pipenv
ã䜿ãã¹ãã§ã¯ãªããšæããŸããç§ãèšã£ãããã«ãããã¯å®éã«ã¯è©±é¡ã§ã¯ãããŸããããè
åšã¢ãã«ã®éãå°ãé²ãã ã®ã§ã調æ»ãã䟡å€ããããšæããŸããã å
·äœçã«ã¯ïŒ
ãŸããPEP 458ã®ãããªçœ²åã¹ããŒã ã§ãããæ€èšŒã«äœ¿çšãããå ¬ééµèªäœããå€æŽããããã«ææ Œãããç¹æš©ãå¿ èŠãšãããã£ã¬ã¯ããªã§ã¯ãªããããŒã ãã£ã¬ã¯ããªå ã®ã©ããã«æ ŒçŽãããŠããå Žåããããã®çš®é¡ã®ã·ã§ããã¬ã³ã«å¯Ÿããå®å šãªé²åŸ¡ã«ã¯ãªããŸããã
å³æ Œãªã»ãã¥ãªãã£èŠä»¶ãæã€çµç¹ããã€ã³ã¿ãŒããããžã®ã¢ã¯ã»ã¹ãå¶éãããããã¯ããŠã³ããããµãŒããŒã§ãã«ããå®è¡ããããŸãã¯ãããã¯ãŒã¯ã¬ãã«ã§ãã®çš®ã®åé¡ãç£èŠããã®ã«ã¯ååãªçç±ããããŸã:)
å°ãªããšãããçšåºŠã®é²åŸ¡ãç¹æš©ã®ããå Žæã«ä¿åãããŠããããŒã«äŸåããŠããããç¹æš©ã®ããpythonã€ã³ã¹ããŒã«ã䜿çšããªãããã«ã¢ããã€ã¹ããŠããå Žåã¯ãè°è«ãã䟡å€ããããšæããŸãã ãã¶ãç§ã¯ééã£ãŠããŸãã ããããããã¯ééããªã@ncoghlanã®ã³ã¡ã³ãã«é¢é£ããŠããããã§ãïŒãã ãã sudo pipenv
ã§ã¯ãªãã決ããŠåé¡ã«ãªãããšã¯ãããŸããïŒ
ãããããã¯ããããã©ããããšããªãåºãŠããããã«èŠããŸããããã ã©ã³ãã ãªèãã§ãã ããŸãããã°ãè¿œå ã®ã³ã³ããã¹ãããããããã€ãã¯ãªã¢ããŸã
ç§ã¯ãTUFãã©ã®ããã«å®è£ ãããã«ã€ããŠã®ææ©çãªè°è«ã«å ¥ãã®ã§ã¯ãªããPyPIãã©ãŒã䜿çšããå¿ èŠããã人ã ãæ¯æŽãããšãããããã¯ã§ãã®åé¡ãç¶æããããšã«æ祚ããŸãã ïŒãšã«ããããŠãŒã¶ãŒã®ããŒã ãã£ã¬ã¯ããªãžã®ä»»æã®æžã蟌ã¿ã¢ã¯ã»ã¹æš©ãæã€æ»æè ããé²åŸ¡ããããã«ã§ããããšããã¹ãããšã¯ããŸããªããšæããŸããïŒ
ããŠãããã§ã¯ãç§ãã¡ãæåŸ ãŸãã¯å¥œãåäœãå®çŸ©ããŸãããã ç§ã®çŸåšã®å®çšçãªç解ã¯æ¬¡ã®ãšããã§ãã
--pypi-mirror
ãæž¡ãããå ŽåããŸãã¯PIPENV_PYPI_MIRROR
ãèšå®ãããŠããå Žåã¯ãä»ã®URLã§ã¯ãªããPyPIã®ã¿ããªãŒããŒã©ã€ãããå¿ èŠããããŸãã ãããã䜿çšãããŠããPyPIURLã¯æ°çš®é¡ãããªãã®ã§ããªã¹ãã«èŒããããšãã§ããŸãã1ã€ãèŠéããšã誰ãããã°ãå ±åããŠè¿œå ããããŸããªããã¹ãŠã®URLãè¿œå ãããŸãã
ç§ã«ãšã£ãŠæ£ããã¢ãããŒãã®ããã§ãã
@njsmithãèšã£ãããšã¯ãç§ã®èŠæ¹ã«ãäžèŽããŸãã æåã®PRã§çœ®ãæããããšããå§ããã3ã€ã®ãªããžããªURLã¯æ¬¡ã®ãšããã§ãã
pip
ã®ããã©ã«ãèšå®ã«äŸåããå ŽåïŒæ«å°Ÿã®ã¹ã©ãã·ã¥ãã©ããã¯ãURLãåå¥ã«ãªã¹ãããããããURLæ£èŠåã¹ããããšããŠåŠçããæ¹ãé©åãªå ŽåããããŸãã
ãªã¯ãšã¹ãã®Pipfileã«ã¯ïŒå·çæç¹ã§ïŒæ«å°Ÿã«ã¹ã©ãã·ã¥ãããããšã«æ³šæããŠãã ããããããã£ãŠããããããããäœããã®æ¹æ³ã§åŠçããå¿ èŠããããŸãã
ããã§ããç§ã®èãã¯æ¬¡ã®ãšããã§ãã
str.rstrip
ã¯ãä»»æã®æ°ã®æ«å°Ÿã®ã¹ã©ãã·ã¥ãåé€ããå Žåã§ããã¿ã¹ã¯ã«ã¯ååã§ããå¯èœæ§ããããŸããããã§ãªãå Žåã¯ãããå³å¯ã«ããããšãã§ããŸããæ«å°Ÿã®ã¹ã©ãã·ã¥ãæ倧1ã€åé€ããŸãïŒçŽ æŽãããã ããã§ååã«æ©èœããã·ã³ãã«ã«æ§ç¯ã§ãããšæããŸãã çããããããšãïŒ
ãã©ãŒæ©èœãããã«è¿œå ãããããšãé¡ã£ãŠããŸãã
ç§ããã®åé¡ã«çŽé¢ããŠããŸãã ç¶æ³ã¯æ¬¡ã®ãšããã§ãã
ç§ã®ãããã€ã¡ã³ãæŠç¥ã§ã¯ãå éšPyPIãµãŒããŒãåç §ããã·ã¹ãã å šäœã®pip.confããã§ã«èšå®ãããŠããŸãã é©ããããšã«ããã®æ§æã¯Pipenvã«ãã£ãŠç¡èŠãããŠããããšãããããŸããã
å éšPyPIã移å/ååå€æŽããå ŽåãPipfilesã䜿çšããããã€ãã®ã¢ããªã±ãŒã·ã§ã³ãæŽæ°ãããããã®Pipfile.lockãã¡ã€ã«ãåçæããå¿ èŠãããããšã«æ°ã¥ããŸããã ãã©ãŒãªãã·ã§ã³ã¯ãå¿ èŠãªæ©èœãæäŸããŸãã PipenvãPipã®ã·ã¹ãã æ§æãèªã¿åãããšãã§ããã°ããããæ©èœããåé·æ§ãå°ãªããªããŸãã
PRã¯ãããæè¿ããŸã
ããã«ã¡ã¯ã åãããŒãºããããŸããããã®ãªãŒããŒã©ã€ãæ©èœãå¥ã®ãã±ããã«åå²ããŸãã
ãããç§ã®äºæ³ãããè¡åã®ææ¡ã§ãïŒ
ãŸãã2çªç®ã®ãã±ããã§ã¯ããªãŒããŒã©ã€ããªãã·ã§ã³ãå®è£ ã§ããŸãã ããšãã°ãCIãªã©ã®å éšã§æå³ããããŸãã
è£è¶³ïŒçŸåšãæ¬çªç°å¢ã§ã¯pipenvãå€çšããŠããŸãããArrifactory Pypiãªããžããªã«ã¢ã¯ã»ã¹ããããã«æ°ãããããžã§ã¯ããéå§ãããšãã«Pipfileãæåã§å€æŽããå¿
èŠãããããšããé »ç¹ã«æãåºãããå¿
èŠããããŸãïŒè©³çŽ°ã«ã€ããŠã¯ãNexusã¯Pypiãå®è¡ããŸãïŒç¡æã§ãã£ãã·ã¥ããtã¯ããŸãæ©èœããŸãïŒïŒã ãã¡ã€ã¢ãŠã©ãŒã«ã¯éåžžã«å¶éãããŠãããäŒæ¥å
ã§ã¯å€éšã®äŸåé¢ä¿ããã£ãã·ã¥ããããšããå§ãããŸããããã«ãããããšãã°ãããã¯ã¢ããããŠè匱æ§ããã§ãã¯ã§ããŸãã
äžè¬æ§æãã¡ã€ã«ãŸãã¯ãŠãŒã¶ãŒæ§æãã¡ã€ã«ã«äŒŒãåçŽãªæ©èœïŒãã§ã«pipãŸãã¯npmã«å¯ŸããŠè¡ã£ãŠãããããªïŒã§ãéçºè
ããã¹ãå°ãªãããããã«ãã¹ãŠã®ã¯ãŒã¯ã¹ããŒã·ã§ã³ã«ãããã€ããå Žåãããã¯ç§ã«ãšã£ãŠå®ç§ã§ãïŒ
äœããéãããããããŸããããããã¯éè¡ã®ããã§ãã ç§ãã¡ã¯ãã°ããã®é11.6.0ã䜿çšããŠãããpipenvã¯å éšã®pypiãã©ãŒãæãpip.confã®èšå®ã«åãã§å§ä»»ããŸããã
ãããå£ãããšãã®ã¢ã€ãã¢ã¯ãããŸããïŒ ããã«ãããpipenvã¯ç§ãã¡ã®ã³ã³ããã¹ãã§ã¯å®å šã«äœ¿çšã§ããªããªããŸãã ã©ãããé·ãéæ£åžžã«æ©èœããŠããã®ã«ãããããæ¬ èœããŠããæ©èœããšèŠãªãã®ã«èŠåŽããŠããŸãã
æ確ã«ããããã«ïŒ2018.05.18ã«ã¢ããã°ã¬ãŒãããåŸãPipfile [.lock]ã§æå®ããããã©ãŒã䜿çšããŠããpipenvã¯pypi.orgããæ°ããããã±ãŒãžãã€ã³ã¹ããŒã«ããããšããŸãã
å€åç§ãèŠãŠããã®ã¯ãããšã¯å¥ã®åé¡ã§ã...
@brettdhããªãã®ç°å¢ãèŠãã«èŠåããã®ã¯é£ããã§ãããåãåé¡ã§ã¯ãªããšæããŸãã ãªãªãŒã¹éã§äºçåããŠããããã©ãã§å€æŽãããããæ£ç¢ºã«ç¢ºèªããæ°ããåé¡ãéãããšããå§ãããŸãã
ç§ã¯ãã®ããã®PRã«åãçµãã§ããŸãã
ç§ã¯ãããããã©ã«ãèšå®ã«å¯ŸããŠåŸéãããšæããŸãã ãŸã ãªãªãŒã¹ãããŠããªãpip10ã®ã¢ããããŒãã®æ³¢ã«å·»ã蟌ãŸããå¯èœæ§ããããŸããã @ JacobHennerããŸã è¿œå ããŠããªãå Žåã¯ãããã»ã©åé¡ãªããããååŸã§ãããšæããŸãã
å
¬åŒã®PyPiã®ãã£ãã·ã³ã°ãããã·ãšããŠdevpiã䜿çšããããšã«ã€ããŠè©±ããŠãããšæããŸãã pipèªäœã®å Žåããã¹ãŠã®ãªã¯ãšã¹ãã«ããŒã«ã«devpiãµãŒããŒã䜿çšããã«ã¯ãpipã®/etc/pip.conf
ãš/usr/lib64/python3.6/disutils/distutils.cfg
ãå€æŽããå¿
èŠããããŸãã
ãã ããpipenvã¯ãããã®ã·ã¹ãã å
šäœã®èšå®ãç¡èŠããŠããããã«èŠãããããdevpiãµãŒããŒãåç
§ããããã«Pipfileã®[[source]]
æ§æèšå®ãå€æŽããå¿
èŠããããŸãã ãã ããPipfileãå€éšã«å
¬éããå Žåãå€éšã®è²¢ç®è
ã¯ãå®éã«ç¬èªã®ç°å¢ãæ§ç¯ããããã«ã [[source]]
ã®èšå®ãåé€ããå¿
èŠããããŸãã
pipenvã¯/etc/pip.conf
ãš/usr/lib.../distutils.cfg
ã®ã°ããŒãã«èšå®ãå°éããå¿
èŠããããšæããŸã
@ polski-g
å ¬åŒã®PyPiã®ãã£ãã·ã³ã°ãããã·ãšããŠdevpiã䜿çšããããšã«ã€ããŠè©±ããŠãããšæããŸã
Nexusãªããžããªã§ããããããåãèãã§ãã
ãã ããpipenvã¯ãããã®ã·ã¹ãã å šäœã®èšå®ãç¡èŠããŠããããã§ã
@techalchemyãè¿°ã¹ãããã«ãpipenvïŒ11.6.0ïŒã¯pip.conf
ïŒhomedirãïŒãå°éããŠãããšæããŸãããææ°ããŒãžã§ã³ã¯ããã§ã¯ãããŸãã-å
·äœçã«ã¯ãã©ããã«ããŒãã³ãŒããããpypi.org URLããããŸãïŒäŸåé¢ä¿è§£æ±ºãIIRCïŒãªãŒããŒã©ã€ãããããšã¯ã§ããŸããã
pipenvã¯ã/ etc /pip.confããã³/usr/lib.../distutils.cfgã®ã°ããŒãã«èšå®ãå°éããå¿ èŠããããšæããŸãã
åæããŸãã-å人çã«ã¯ããŠãŒã¹ã±ãŒã¹ã§distutils.cfg
ãå€æŽããå¿
èŠã¯ãããŸããã§ããã
IIRCã«ã¯ãpip.confãå°éããªããšãã解決çããããŸãããããããèŠã€ããã«ã¯ã課é¡è¿œè·¡ã·ã¹ãã ãæ·±ãæãäžããå¿ èŠããããŸãã ãããã«ãããè¹ã¯åºèªããŠãããPyPIãã©ãŒãªã³ã°ãã»ãŒå®äºããŠãããããè¿ãå°æ¥ããããå€æŽãããå¯èœæ§ã¯ã»ãšãã©ãããŸããã
ãã®æ©èœã¯æ¬¡ã®ãªãªãŒã¹ã§åºè·ããããšç¢ºä¿¡ããŠããŸãïŒéãè¯ããã°ç¿æ¥ã2æ¥ã§åºè·ãããŸãïŒ
ãŸããããã«ã€ããŠã¯ããããããŸããããããã§æ§æããŒãµãŒãäœæããŠæ§æã®ããã©ã«ããååŸããåŸã .load()
ãåŒã³åºãå¿
èŠãããå¯èœæ§ããããŸã
https://github.com/pypa/pipenv/blob/master/pipenv/project.py#L573-ïŒL577
@uranusjrã¯ããã©ãŒãªã³ã°æ§æãæ©èœããéãïŒã€ãŸããåè¿°ã®ããŒãã³ãŒããããpypi.org URLã䜿çšããªãéãïŒãpipenvãç¬èªã®æ§æãæã¡ãpipãç¡èŠããŠãåé¡ã¯ãããŸããã
@brettdhç§ã®ãã©ã³ãããã§ãã¯ã¢ãŠãããŠããããããªãã®ãã©ã³ãã«é©åããŠããããšã確èªã§ããŸããïŒ
ã䜿çšã®ç°å¢ã§ã®ãŠãŒã¹ã±ãŒã¹ïŒ
>>
@JacobHennerãããããããšãã --pypi-mirror
ãªãã·ã§ã³ïŒ pipenv install
ã pipenv lock
ïŒã䜿çšããæåã®ãã¹ãã¯ãæ£åžžã«æ©èœããŠããããã«èŠããŸãã ç§ã¯PRã«å°ããªææ¡ãæ®ããŸããã
ãã ããpypi.orgãžã®ããŒãã³ãŒããããURLããŸã pipenvãœãŒã¹å
šäœã«æ£åšããŠããããã«èŠããã®ã§ã¯ãªãããšå°ãå¿é
ããŠããŸãã [[source]]
ãšã³ããªããã©ããæ£ãããªãŒããŒã©ã€ããããŠãããããããŸããããŸããäžèšã®åé¡ã®åå ãšãªã£ãã¯ãŒã¯ãããŒãæ£ç¢ºã«æãåºããŸããã ãããã£ãŠãä¿®æ£ãããŠãããã©ãããå€æããã®ã¯å°é£ã§ãã ð¬
ããããã®ãªãªãŒã¹ã«ç¶ããŠãç§ã¯äž»èŠãªã³ãŒãã®ã¯ãªãŒã³ã¢ãããèšç»ããŠããŸãã CLIã¯ãCLIã«ç§»åããããã§äŸå€ããããªã³ã°ããããã§ãã¹ãŠã®åºå£ãåŠçããéè€ããã³ãŒããéè€æé€ãããªã©ãå€ãã®äœæ¥ãå¿ èŠã«ãªããŸãããã©ã³ãã£ã¢ããããå Žåã¯ãå©ããŠããã ããã°å¹žãã§ãã
æè¿ã®ããŒãžã§ã³ããã«ããã ãã§ããœãŒã¹ã«pypi.orgãããŒãã³ãŒãã£ã³ã°ãããŠããŸãã ç°å¢å€æ°ãŸãã¯pypi-mirrorãååŸããããã[[source]]ã®ããã©ã«ããšããŠèšå®ããããšãç®æšã§ããïŒ
ç·šéïŒ
ã³ãŒããæãäžããã ãã§ãã
if PIPENV_TEST_INDEX:
DEFAULT_SOURCE = {
u"url": PIPENV_TEST_INDEX,
u"verify_ssl": True,
u"name": u"custom",
}
else:
DEFAULT_SOURCE = {
u"url": u"https://pypi.org/simple",
u"verify_ssl": True,
u"name": u"pypi",
}
PIPENV_TEST_INDEXãç°å¢å€æ°PIPENV_PYPI_MIRRORã«å€æŽããå Žåã¯ãè¯ãã¹ã¿ãŒãã«ãªããšæããŸãã
ããã§èª¬æãããœãªã¥ãŒã·ã§ã³ã¯ãé·ãéå®è£ ãããŠããŸããã åŒçšããã¹ããããã¯ããã©ã«ãã§ããã€ãŸããPipfileã®äœææã«ãœãŒã¹ãæå®ããªãå Žåã«äœ¿çšãããŸãã
ããããPipfileã§ãœãŒã¹ãå€æŽããªãã§ãã ããã ãã®å€æŽã®ç®æš
ãŠãŒã¶ãŒããã©ãŒã䜿çšããŠPyPIURLããªãŒããŒã©ã€ãã§ããããã«ããããšã§ããã
Pipfileã
@JacobHennerãã©ãŒåŠçã³ãŒãã¯ããœãŒã¹ãªã¹ããåŸåŠçãã pypi.org
URLãæå®ããããã©ãŒãžã®åç
§ã«çœ®ãæããŸãã
ããã«ããã Pipfile
ã«æ瀺çãªpypi.org
ãšã³ããªãããå Žåã§ãããã©ãŒãªãŒããŒã©ã€ããæ©èœããŸãã pipenv
ã¯ãåãããžãã¯ã«äŸåããŠãç¬èªã®ããã©ã«ããœãŒã¹ããªãŒããŒã©ã€ãããŸãã
çŸåšããã®åŸåŠçãæ£ããé©çšãããŠããªãå Žåã¯ãæ©èœèŠæ±ã§ã¯ãªãããã§ã«å®è£ ãããŠããæ©èœã«å¯Ÿããæ°ãããã°ã¬ããŒãã§ãã
æåŸã®ã³ã¡ã³ãã¯@kylecribbsã察象ãšãããã®ã ãšæããŸããïŒ
@JacobHennerãããããããªãã-ç§ã¯ããªãã®ã³ã¡ã³ããããã®çµæãå®éã«äœã§ããããæããã«ããããšãç®çãšããã«ã€ã«ãžã®å¿çãšããŠã§ã¯ãªãããã®å€æŽãåœåã®ç®æšãéæããªãã£ããšèšã£ããšèª€è§£ããŸããã
æãåèã«ãªãã³ã¡ã³ã
ä»ã®URLã§ã¯ãªããPyPIã®ã¿ããªãŒããŒã©ã€ãããå¿ èŠããããŸãã ãããã䜿çšãããŠããPyPIURLã¯æ°çš®é¡ãããªãã®ã§ããªã¹ãã«èŒããããšãã§ããŸãã1ã€ãèŠéããšã誰ãããã°ãå ±åããŠè¿œå ããããŸããªããã¹ãŠã®URLãè¿œå ãããŸãã