ç§ăŻäťéąćŤAWOLă§ăăăç§ăç解ăăŚăăăăăŤăPEP518ă¨ăăăpipă§ĺŽčŁ ăăăăăŽč°čŤăĺż čŚă§ăă
芹ăĺăăčĄăăăŚăăĺ ´ćăčŚă¤ăăăŞăăŁăăăăăăŽĺéĄăéăăžăăă ăăăŤăpypa-dev / distutils-sigă§ăŻăŞă1ă¤ăŽĺ ´ćăŤé 罎ăăă¨ăăăćăăŤăŞăăžăăďź
@xoviatăďź 4799ă§č¨ăŁăŚăăăă¨ăç解ăăăă¨ćăä¸ăăŚăżăă¨ăăăŤăç°ĺ˘ăŽĺ帰çăŞăăŤăăŤé˘ăăŚăăă¤ăăŽĺéĄăăăăă¨ăćăăăŤăŞăăžăăďźXăŻăăŤăăăăăăŤYăĺż čŚă§ăăăYăŻZăĺż čŚă§ă...ďźă măăăăĺŽčŁ ăŽăă°ăŞăŽăăăă桹ăč¨č¨ä¸ăŽĺéĄăŞăŽăăăăă¨ăăăžăĺéĄăŞăĺťśćă§ăăĺäťăŞăłăźăăźăąăźăšăŞăŽăăŻăžă ä¸ćă§ăă
ĺäşşçăŤăç§ăŻčŞĺăŽćˇąăżăăĺ¤ăăŚăăă¨ăăăŤăăžăă @xoviatăŽĺŽčŁ ăĺż čŚăăŠăăăăžăăŻďź4764ăăăźă¸ăăŚďź4647ă俎ćŁăăŚćşĺăă§ăăŚăăăăŠăăăĺ¤ćăăăăăŽĺŽčŁ ăăăăăžăăă ăžăăďź4647ă俎ćŁăăăŽăăŠăăťăŠç°Ąĺăăăăăžăăďź @xoviatăŻăďź4647ă俎ćŁăăăăăŤďź4799ăăăźă¸ăăĺż čŚăăăă¨č¨ăŁăŚăăăăă§ăăăăăčŞä˝ăŤĺéĄăăăăžăďźă
ç§ăŻäťéąćŤăč°čŤăăăăŤé˛ăăăăăŽćéă¨ă¨ăăŤăŽăźă使ăćăăăăŽă§ăăăŽćçšă§ďźĺ°ăŞăă¨ăăă°ăăăŽéďźä¸éăăă¤ăăă§ăă ç§ăŤă¨ăŁăŚéčŚăŞăŽăŻăăăă10ăŤĺŻžăăŚč¨ąĺŽšăŹăăŤăŽPEP 518ăľăăźăăĺż čŚăŞăă¨ă§ăă誰ăăŤăç§ăăĄăăăăăăăăŤăăăŽăăăăă¨ăć°éąéĺ ăŤăăăŽăăćăăŚăăăăăăŽă§ăăăăă10ăćĽăŚăć°ĺš´ăžă§ăŻăŞăă¨č¨ăă ăă§äşşă ăč弎ăăăŽăéżăăăă¨ăă§ăăžă...
é常ăŤĺ˝šçŤă¤čŚç´@pfmooreăăăăă¨ăă
@ncoghlan @dstufft @xoviatăăă§č°čŤăăăŚăăă ăăžăăăďź ăŻăăźăşăPRă§ăăăčĄăăă¨ăŻç§ăŤăŻĺĽĺŚăŤćăăžăă ._ă
確ĺŽăŞăă¨ă
@pradyunsgç§ăŻăăŞăăăăăŽăăăŽćéăăŞăăă¨ăçĽăŁăŚăăžăă ăăăăăăŞăăŻç§ăăăPRăŽćżčŞăĺžăăă¨ăŤćĺăăŚăăăŽă§ăĺż čŚăŤĺżăăŚăçžĺ¨ăŽĺŽčŁ ăăăŽäťçľăżăăăăłć˝ĺ¨çăŞĺéĄăŤă¤ăăŚčŞŹćăăžăă ăăăăŽĺéĄăŽä¸é¨ďźăăšăŚă§ăŻăŞăďźăăŠăŽăăăŤč§ŁćąşăăăăăăăłĺŽĺ ¨ăŤäżŽćŁăăăăăŽă˘ă¤ăă˘ăŤă¤ăăŚčŞŹćăăžăďźăăăăPEP 517ăŽĺžă§ăĺŽäşăăŚăăŞăĺ ´ĺăŻĺŽčĄă§ăăžăďźă ç§ăŻćŁç´ăŞă¨ăăăăăăčĄăăăŚăăéăă誰ăăăŽäťäşăăăăăŻć°ăŤăăžăăă
ĺŽéăăăŞăăŻAWOLăŞăŽă§ăčŚç´ăć¸ăăăŚăă ăăă
pip
ăŤăŻăăťă¨ăăŠăŽPythonăăă¸ă§ăŻăă§ä¸čŹçăŞăŞăă¸ă§ăŻăé幤ăăăăžăă ăăăŻăăšăŚăăŞăă¸ă§ăŻăă¸ăŽć°ăăĺç
§ăä˝ćăăăłăăłăăéĺ§ăăä¸ä˝ăŽăŞăă¸ă§ăŻăă¸ăŽć°ăăĺç
§ăä˝ćăăžăă ăăăŻć¨ăŽăăăŞăăŽă§ăă
ăŞăă¸ă§ăŻăăŽăăšăłăźăăăä¸ç¨ŽăŽăŠă¤ăăżă¤ă ă¨ăăŚĺŽçžŠăăžăă ăŞăă¸ă§ăŻăăĺĺ¨ăăćéă§ăă çžĺ¨ă pip
ăŽPEP 518ăŽăšăłăźăăŻWheelBuilder
ă§ăă PEP518ç°ĺ˘ăŻbdist_wheel
ăŤč¨ĺŽăăă揥ăŤbdist_wheel
ăăăŽç°ĺ˘ĺ
ă§ĺŽčĄăăă揥ăŤç°ĺ˘ăç ´ćŁăăăžăă
ăăă§ăăăăŽĺéĄăŻä˝ă§ăăďź ĺéĄăŻăPEP 518ç°ĺ˘ăŽăšăłăźăăă setup.py
ă¸ăŽăăšăŚăŽĺźăłĺşăăŽăšăłăźă䝼ä¸ă§ăăĺż
čŚăăăăă¨ă§ăă ĺ
ˇä˝çăŤăŻă setup.py
ăŽĺźăłĺşăä¸ăŤĺĺ¨ăăăŞăă¸ă§ăŻăăăŤăăťăŤĺăăĺż
čŚăăăăžăă ăăŽăŞăă¸ă§ăŻăăŻRequirement
ă§ăă
ăăŞăăééăăćĺăŽćç˝ăŞćąşĺŽăŻćŹĄăŽă¨ăăă§ăďź BuildEnvironment
ă¸ăŽĺç
§ăćă¤ăšăăăŽăăăăŚRequirement
ăŻäťăŽĺ ´ćă¨ăăŚčŻăĺ ´ćă§ăă ĺŽéă Requirement
ăĺĺ¨ăăĺ ´ĺăŤăŽăżă setup.py
ăĺźăłĺşăăăăăăIMHOăĺç
§ăé
罎ăăăŽăŤćéŠăŞĺ ´ćă§ăă
揥ăŤçşçăăĺŻč˝ć§ăŽăăĺéĄăŻćŹĄăŽă¨ăăă§ăă BuildEnvironment
čŚäťśăăŠăŽăăăŤă¤ăłăšăăźăŤăăžăăďź pip
ăžă§ăˇă§ăŤă˘ăŚăăăăă¨ăă§ăăžăă ăăăŚăăăăŻĺ
ăŽĺŽčŁ
č
ăŤăăŁăŚăŞăăăćąşĺŽă§ăă ăă ăăăăăŤăŻĺéĄăăăăžăă pip
ăŻăĺpip
ăĺăłčŞĺčŞčşŤăĺźăłĺşăĺŻč˝ć§ăăăăăăăˇă§ăŤĺźăłĺşăăăăă¤čĄăăăŚăăăăçĽăćšćłăăăăžăăă ĺŽéă垪ç°äžĺé˘äżăćă¤ćŞćăćăŁăŚć§çŻăăăăăăąăźă¸ăŻă pip
ăçćăăăăăťăšăĺ¤ăăăă¨ă誰ăăŽăłăłăăĽăźăżăźăăŻăŠăăˇăĽăăăĺŻč˝ć§ăăăăžăă
ăă1ă¤ăŽĺéĄăŻăăŠăŽăˇă§ăŤĺźăłĺşăăčĄăĺż
čŚăăăăă¨ăăăă¨ă§ăă ăłăăłăăŠă¤ăłăăŠăĄăźăżăĺĺžăăăă¨ăŻăçç´ăŤč¨ăŁăŚăăăŽĺźăłĺşăăčĄăĺż
čŚăăăPITAă§ăăăăăĺŽéăŤăŻćłĺ䝼ä¸ăŤćł¨ćăĺż
čŚă§ăă ăăŽăăăăŚăźăśăźăĺăŤć¸Ąăăĺ
ăŽăăŠăĄăźăżăźă渥ăăŽăŤĺéĄăçşçăăĺŻč˝ć§ăăăăžăă ĺ
ăŽĺŽčŁ
č
ă使ç¨ăăă˝ăŞăĽăźăˇă§ăłăŤăŻfinder
ăŽä˝żç¨ăĺŤăžăăŚăăžăăăăĺéĄăŻăĺçĽă ă¨ćăăžăă
ăŚăźăśăźăctrl + Căćźăăă¨ăăŤĺă掺ăăă¨ăă§ăăăăă税ăŽăăăźă¸ăŁăźăŻăŠăšăŞăă§čŞĺăŽĺăăˇă§ăŤă˘ăŚăăăăă¨ăŻăééăŁăŚăăă ăă§ăŞăăçšăŤăçćăăăăăťăšăŽć°ăăăăăŞăĺ ´ĺăŻćŞćăăăăžăă ç§ăŻĺäşşçăŤăĺäžăăĄăçžĺ¨ăŽĺŽčŁ ă§ćťăŹăăŠăăăŻăăăăžăăďźăăăŻFUDăăăăăžăăďźăăăăă§ăŞăĺ ´ĺăçžĺ¨ăŽĺŽčŁ IMHOăŻééăŁăŚăăžăďźäťăŽć¸ĺżľăŻĺĽă¨ăăŚďźă
ăăŽĺéĄăŤĺŻžăăăăă¤ăăŽĺŻč˝ăŞč§ŁćąşçăŻćŹĄăŽă¨ăăă§ăă
PEP 518ăăă˘ăŽĺ¤ăŤĺşăăăĺ ´ĺăćĺăŽçăŻăăăăăçĄéăŤĺ˘ĺ ăăŞăăăăŤăăăăăŤăć大10ĺç¨ĺşŚăŽăăăŻăă訹ĺŻăăŞăăă税ăŽăăăŻăăĄă¤ăŤă§ăă 揥ăŤăăłăăłăăŠă¤ăłĺźć°ă¨ă¨ăăŤćŁç˘şăŞčŚäťśăĺăŤć¸Ąăăă¨ăă§ăăžăă
PEP 517ăŽĺžăŤĺŽčŁ
ăăăéŠĺăŞč§ŁćąşçăŻă install
ăłăăłăă§ç´ćĽĺćĺăăăBuildEnvironmentManager
ăŻăŠăšăç¨ćăăăă¨ă§ăă BuildEnvironmentManager
ăŤăŻăăăăŤăăăăšăŚăŽăŞăă¸ă§ăŻăďź RequirementPreparer
ă WheelBuilder
ăŞăŠďźă¸ăŽĺç
§ăăăăĺä¸ăŽăĄă˝ăăget_build_environment(requirement_set)
ăăăăžăă 揥ăŤă RequirementPreparer
ăŤset_build_environment_manager
ăŽăăăŞăĄă˝ăăăĺŽčŁ
ăăăăă使ç¨ăăŚăăŤăç°ĺ˘ăĺĺžă§ăăžăă BuildEnvironmentManager
ăŻăĺăç°ĺ˘ďźćăä¸čŹçăŤ['setuptools', 'wheel']
ďźăŽč¤ć°ăŽä˝żç¨ăć¤ĺşăăč¤ć°ĺĺż
čŚăŞĺ ´ĺăŻĺăç°ĺ˘ăćäžăăŚăä˝ćăăĺż
čŚăăŞăăăăŤăăăă¨ăă§ăăžăďźćĺăŻé常ăŤä¸čŹçă§ăďźă pyproject.toml
ăăŞăăăă¸ă§ăŻăăŽĺ ´ĺďźă çćłçăŤăŻă垪ç°ĺç
§ăĺé¤ăăăă¨ăăOOPč¨č¨ăăăăžăďźç°Ąĺă§ăŻăăăžăăďźă
@xoviatćĺłçăŞćŞćăŽăăăąăźăšăăŤăăźăăŚăăŞăăăăăăžăăă--no-binary :all:
ĺŽäşăăăăŤăă ăă§ăŞăă -é˛čĄä¸ăŽăăŽăŻăăăŤăäžĺé˘äżăľă¤ăŻăŤă確ĺŽăŤçľäşăăăăŽăŤĺĺă§ăăăăďź ăăăŻăćĺăŽććĄďźĺćăăăĺźăłĺşăăŽć°ăŤĺŻžăăăŻăăšăăăťăšĺśéďźăŽĺ¤ĺ˝˘ă§ăăă揥ăŽăăăŤĺĺŽĺźĺăăăžăă
--binary <name>
ăĺż
čŚăŤăŞăăă¨ă示ăă¨ăŠăźă§ăă¤ăŤă˘ăŚăăăžăăpip
ăŻă setuptools
ă¨wheel
ăŽä¸Ąćšăĺż
čŚă¨ăăăăăŠăŤăăă¸ăăŻăăsetuptools
ă¨wheel
ăĺ
é¤ăăă¨ăă@pfmooreăŽććĄăĺŽčŁ
ăăĺż
čŚăăăăžăă wheel
ăăăŤăăŽäžĺé˘äżă¨ăăŚä˝żç¨ăăžăăăăăăŞăă¨ăćéťçăŞăăŤăăŽäžĺć§ăŽćł¨ĺ
ĽăŤăăăćŹčłŞçăŤĺžŞç°äžĺć§ăŽć¤ĺşăă¸ăăŻăăăŞăŹăźăăăžăă
ăăŁăšăŻă使ç¨ăăŚOOPč¨č¨ăŽĺéĄăç解ăăĺż čŚăăŞăăăăŤăăăă¨ăŻăćŞăčăă§ăŻăăăžăăă ăăăŻăPEP 518ăĺŽĺ ¨ăŤćŁăăĺŽčŁ ăăăă¨ă¨ăä˝ăăä¸çˇăŤăăăăłă°ăăăă¨ăŽéăŽä¸éăŞăăˇă§ăłăŽăăăŞăăŽă§ăă
ăžăăăŞăăŹăźăăŁăłă°ăˇăšăă ăŹăăŤăŽăăźăŤă使ç¨ăăŚăăžăăžăŞPythonăŹăăŤăŽăăŤăăäşăăŤĺé˘ăăŚăăăă¨ăă§ăăăăăăłăłăăĺăăăç°ĺ˘ăchrootă¨ăăžăç¸äşä˝ç¨ăăăăăpipăŻçŹčŞăŽăľăăăăťăšă確äżăăćšćłăç解ăăĺż čŚăăăăžăăäşăăŤĺĺăăă
@xoviatä¸č¨ăŽčŚç´ăŤćčŹăăžăă ç§ăč¨ăŁăăăăŤăç§ăŻăăŽĺéăŽăłăźăăŽç解ăŽéçăŤéăăžăăăăăăŚăăŞăăŽčŞŹćăŻç§ă大ăăŤĺŠăăŚăăăžăăă
ç§ăŻĺŽéăŤďź4144ăŽăłăźăăčŚăăă¨ăăăăžăăă§ăăă ç§ăŻăĄăăăŠăăžăăăăăăŚăç§ăŻăăăĺşčˇăăăăă¨ăćŹĺ˝ăŤćăă§ăăžăăă
PEP 518ăĺŽĺ ¨ăŤćŁăăĺŽčŁ ăăä˝ăăä¸çˇăŤăăăăłă°ăăă ăă§ăă
ćŁç´ăŞă¨ăăăăăăŤĺ¸°çăăă¨ćăăžăă PEP 518ăĺŽĺ ¨ăă¤éŠĺăŤĺŽčŁ ăăăă¨ăŻăăăŽăăăŤăăă°ăăăă10ăďźĺ ŹćŁăŞďźăăăé ĺťśăăă/ĺŻč˝ć§ăŽăăăżăšăŻă§ăă
ăăă§ăŽĺŽĺ ¨ăŞä¸éçšăŻăăăŤăäžĺé˘äżăăă¤ăźăŤă¨ăăŚä˝żç¨ă§ăăăăăŤăăăă¨ăčŚćąăăăă¨ă ă¨ćăăžăă ăăăăă°ăăăŤăăŽäžĺé˘äżďźăăăłăăăăŽăăšăŚăŽäžĺé˘äżďźăăăŽăăăťăšă§ăăŤăăăĺż čŚăăŞăăăăĺ帰ăŽĺéĄăĺéżă§ăăžăă
ăăăŻăŠăŽăăăŤčăăăžăăďź
ĺśéăăăŚăăžăăăĺśéăăăćĺăŽĺŽčŁ ăŻă注ćăć ăŁăĺ ´ĺăŤčŞĺă§ćă¤ăă¨ăă§ăăćĺăŽĺŽčŁ ăăăĺŞăăŚăăă¨ćăăžăă
PEP 518ăĺŽĺ ¨ăă¤éŠĺăŤĺŽčŁ ăăăă¨ăŻăăăŽăăăŤăăă°ăăăă10ăďźĺ ŹćŁăŞďźăăăé ĺťśăăă/ĺŻč˝ć§ăŽăăăżăšăŻă§ăă
ăăă確čŞăăŚăăăŚăăăă¨ă-ăăăŻç§ăŽćăă§ăăă
ăăăăĺ°ăŞăă¨ăé¨ĺçăŞPEP 518ăăă§ăŤăăšăżăźăŤăŞăŁăŚăăă¨ćăŁăăŽă§ăäťăŻćˇˇäšąăăŚăăžăă ĺ ˇä˝çăŤăŻăç§ăç解ăăŚăăăăăŤăďź4647ăŻăăšăżăźă§ăŽPEP 518ăľăăźăăŽăă°ă示ăăŚăăžă-ăăăćŁăăăŞăăŽă§ăćăăăŤç§ăăĄăŻăă§ăŤä˝ăăćăŁăŚăăžă...
ă ăăç§ăăĄăŻä˝ăăăăŞăăă°ăŞăăžăăăăăăŚăăăŻăŞăăˇă§ăłă揥ăŽăăăŤćăăăžăďź
ăăŞăăč¨ăăăăŤăďź3ďźăŻpip 10ăŽĺăŤéˇăé ĺťśăćĺłăăç§ăćŹĺ˝ăŤăŞăŞăźăšăăŚăťăăäťăŽäżŽćŁăăăăžăďźUnicodeăŽäżŽćŁăŻç§ăăĄăĺŽćçăŤĺéĄăćąăăŚăăăăŽă§ăďźă ă ăăç§ăŻăăăŤçąĺżă§ăŻăăăžăăă ďź1ďźăŤă¤ăăŚăŻăăŁăăăŁăŚăăžăăă§ăăăăăăăŻPEP 518ăŽăľăăźăăăŞăă¨ćăŁăŚăăăŽăăăăă¨ăĺăćśăăă¨ăă§ăăŞăă¨ćăŁăŚăăăŽăăŻăăăăžăăă ĺäşşçăŤăŻăăăŽă˘ă¤ăă˘ăŻĺĽ˝ăă§ăŻăăăžăăăăăăŻĺžćťăăŽăšăăăă§ăăăćŁăăĺŽčŁ ăăăŽăéŁăăĺ ´ĺăŻăPEPčŞä˝ăŤă¤ăăŚăăŞăĺŚĺŽçăŞăĄăăťăźă¸ăé俥ăăžăă ăăăăç§ăăĄăŻăăăćĺŚăăăă¨ăŤă¤ăăŚć確ăŤăăšăă ă¨ćăăžăă
ăăŤăäžĺé˘äżă¨ăăŚăă¤ăźăŤăŽăżăăľăăźăăăăăźă¸ă§ăłăŽPEP518ăĺşčˇăăă¨ăăďź2ďźăŽććĄďźăă¤ăźăŤă§ăăăăŤăäžĺé˘äżă使ç¨ăăăă˘ăłăšăăŹăźăˇă§ăłă¨ăăŚăďź4647ă俎ćŁăăĺż čŚăăăăžăďźăŻĺŚĽĺ˝ăŞăăă§ăăĺŽčŁ ăăăŽăĺŽç¨çă§ăăă¨ăăćĺłă§ă ç§ăŽä¸ťăŞäşç´ăŻăPEP518ă使ç¨ăăăäşşăŤă¨ăŁăŚăăŽĺśéăăŠăăťăŠĺéĄăŤăŞăăăăăăŞăă¨ăăăă¨ă§ăă
ă§ăăăăç§ăăĄăŻä˝ăăăŚăčĄă芰ăžăŁăŚăăăăăŤćăăžăăăăăŤăăŽäžĺé˘äżă¨ăăŚăă¤ăźăŤăŽăżăăŤăăźăăé¨ĺçăŞăľăăźăăŻăćŞăăăăăŽä¸ăăćčŻăŽăŞăăˇă§ăłă§ă:-(
PEPăŽä˝ćč ďźhttps://github.com/pypa/pip/pull/4799#issuecomment-338331267ăăăłhttps://github.com/pypa/pip/pull/4799#issuecomment-338332575ďź https://github.com/pypa/pip/pull/4799#issuecomment-338325354ďźăŻăĺŽĺ ¨ăŞPEPăľăăźăăŤăŻăăŤăăŽäžĺé˘äżăć§çŻăăĺż čŚăăăăă¨ăć確ăŤç¤şăăŚăăăăăä¸ćçăŞăăŽă§ăăĺż čŚăăăăžăă
ăăăăăăăĺŽčŁ ăăăŽăŻç§ă§ăŻăŞăăŽă§ă誰ăĺŽčĄăăăăĺ¤ćăăŚĺăă§ăăžăă ç§ăčĄăŁăăă¨ăŽ1ă¤ăŻăďź4803ăä˝ćăăăŞăŞăźăšăăăăŤăźă¨ăăŚăăźăŻăăăă¨ă§ăăĺż čŚăŤĺżăăŚăäťć§ăăăŠăŽăăăŤé¸čąăăăăćć¸ĺăăĺż čŚăăăăă¨ăćăĺşăăăŚăă ăăă
ďźăăăŚăăŽĺéĄăŤă¤ăăŚăŻăăăăŻăăĺ¤ăăŚăăžăăăPEP 517ăŽĺŽčŁ ăéĺ§ăăă¨ăăŤĺăééăăăăŞăăăăŤćł¨ćăăăă¨ăăĺ§ăăăžăăďźăłăźăăŁăłă°ăŤćˇąăĺ ĽăčžźăĺăŤăĺŽčŁ ăŽĺ˝ąéżăăăšăŚç解ăăŚăăăă¨ă確čŞăăžăăă-ç§ăŽćŹč˝PEP517ăŻPEP518ăăăăăăŤč¤éăŞč¨č¨ä¸ăŽĺéĄăŤăŞăă¨ăăăă¨ă§ă...ďź
ăă˝ăźăšăăăăšăŚăăăŤăăăăă¨ăă茳çšăăăŻăăăŁăšăăŞăăĽăźăˇă§ăłăŤćă粞éăăŚăăăăăăŤăăŤăźăăŽăăźăăšăăŠăăăăăăťăšăé常ăŽăăăąăźă¸ăăŤăăŽăăăťăšăă確ĺŽăŤĺé˘ăăŚăăžăă Căłăłăă¤ăŠăŽăăźăăšăăŠăăăŞăŠăčĄăĺż čŚăăăăăăă˝ăźăšăăăŽĺŽĺ ¨ăŞčŞĺăăźăăšăăŠăăăŻĺ°éŁă§ăă
ăăăăŁăŚăpipăŽĺ ´ĺăăăŤăăŽäžĺé˘äżăŻĺ¸¸ăŤăă¤ăźăŤăăĄă¤ăŤăăă¤ăłăšăăźăŤĺŻč˝ă§ăăă¨č¨ăăŽă匼ĺ˝ă ă¨ćăăžăă 10.x䝼éăŤĺ°ĺ Ľă§ăăćščŻçšăŻăé常ăŽăă¤ăźăŤăăŁăăˇăĽă¨ăŻç°ăŞăăăŤăăăŁăăˇăĽăç¨ćăăăă¨ă§ăăăăăŤăăăăăŁăăˇăĽăŽăŚăźăśăźăŻăPyPIăăăăŚăłăăźăăăăŽă§ăŻăŞăăĺśĺžĄăăăç°ĺ˘ă§ăăšăŚăŽăă¤ăźăŤăăăŤăăăăăă¨ă確čŞă§ăăžăăăžăăŻĺĽăŽă¤ăłăăăŻăšăľăźăăźă
ĺäşşçăŤăŻăăăŽă˘ă¤ăă˘ăŻĺĽ˝ăă§ăŻăăăžăăăăăăŻĺžćťăăŽăšăăăă§ăăăćŁăăĺŽčŁ ăăăŽăéŁăăĺ ´ĺăŻăPEPčŞä˝ăŤă¤ăăŚăăŞăĺŚĺŽçăŞăĄăăťăźă¸ăé俥ăăžăă
ç§ăŻĺż ăăăăăăŤĺćăăžăăă pipăćŁăăĺŽčŁ ăăăŽăŻéŁăăă§ăă ăăăăPEPăŤč¨čźăăăŚăăpipăŻăäşşă ă使ç¨ăăĺŻä¸ăŽăăăłăă¨ăłăăŽ1ă¤ă§ăă č¨čŞĺŽčŁ č ă¨ăăŚăŽç§ăăĄăŽäťäşă ă¨ćăăžăăpipăŻĺŽéăŤăŻăPythonăăă¸ă§ăŻăăăăăąăźă¸ĺăăăăăŤä˝żç¨ăăč¨čŞă§ăăăăăăăŽéŁăăĺéĄăăăšăŚčăăăă¨ăŞăăăăŤăăˇăšăă ăă§ăăă ăç°ĄĺăŤä˝ćă§ăăăăăŤăăžăă 彟ăăŤă¨ăŁăŚăŻăç§ăăĄă大ĺ¤ăŞäťäşăăăăŽă§ăăăăŻăˇăźă ăŹăšăŤćŠč˝ăăăŻăă§ăă
ăăă§ăŽĺŽĺ ¨ăŞä¸éçšăŻăăăŤăäžĺé˘äżăăă¤ăźăŤă¨ăăŚä˝żç¨ă§ăăăăăŤăăăă¨ăčŚćąăăăă¨ă ă¨ćăăžăă
ĺŽéăăăăŻăžăăŤďź4799ăčĄăăă¨ă§ăă ĺż čŚăŤĺżăăŚăăăŽăăŠăłăă垊ĺ ăăŚăăăăăŠăźăŻăăŚPRă¨ăăŚé俥ă§ăăžăă
@xoviatăä¸ă§ććăăăăăŤăďź2ďźăŽĺŽčŁ ĺ´ăŽ2ă¤ăŽăă¨ăŻăžă ćŽăŁăŚăăžăďź
ăľăăăăťăšăä˝ćăăćšćłăç解ăăďźĺźć°ăŞăŠďź
ç§ăŻĺŽčĄĺŻč˝ă§ăăăšăă ă¨ćăăžăă
ă¤ăłăšăăźăŤăăăăăąăźă¸ăăźă¸ă§ăłă
çžĺ¨ăŽăŞăžăŤăăźăłăźăăăžă pip._internal.operations.prepare
ăŽăłăźăă¨çľĄăżĺăŁăŚăăă¨ăăäşĺŽăčăăă¨ăăăăăŠăŽăăăŤćŁç˘şăŤčĄăăăăăŻăăăăžăăăăăăăŻăăăăĺă茪ăăăťăšă§ĺŽčĄăăĺż
čŚăăăăžăă äťéąä¸ăŤăăă調ăšăžăă
ăăăă誰ăăăăăčĄăćéăăăăŽăââăăăăžăăă
ćŁăăĺŽčŁ ăăăŽăéŁăăĺ ´ĺăŻăPEPčŞä˝ăŤă¤ăăŚăăŞăĺŚĺŽçăŞăĄăăťăźă¸ăé俥ăăžăă
ćŁăăĺŽčŁ ăăăŽăŻăăăăéŁăăăă¨ă§ăŻăăăžăăă äťćĽăŽpipăŽăłăźăăăźăšăŽăăăŤăpipăŤĺŽčŁ ăăăŽăŻç°Ąĺă§ăŻăăăžăăăĺĽĺŚăŞĺ ´ćă§çşçăăăă¨ăăăăăăăăŻăŞăźăłă˘ăăăăăă°ăăăŞăç°ĄĺăŤăŞăă¨ćăăžăă
ďź1ďźăŤă¤ăăŚăŻăăŁăăăŁăŚăăžăăă§ăăăăăăăŻPEP 518ăŽăľăăźăăăŞăă¨ćăŁăŚăăăŽăăăăă¨ăĺăćśăăă¨ăă§ăăŞăă¨ćăŁăŚăăăŽăăŻăăăăžăăă
ăăăŻă˘ăŚăăŻăŞăăˇă§ăłă§ăŻăŞăă¨ćăăžăăă
äťčăăŚăżăă¨ăPEP518ăpip10ă§ĺşčˇăăăă¨ăŻăŠăăťăŠéčŚă§ăăďź ćŹĄăŽăĄă¸ăŁăźăŞăŞăźăšăžă§ĺťśćă§ăăă°ăďźăăŽçśćłăăç°ĄĺăŤćăĺşă䝼ĺ¤ăŤďźç°Ąĺă§ă517 +518ăŽä¸Ąćšă1ă¤ăŽĺ¤§ăăŞăŞăŞăźăšăŤĺ°éăăĺŻč˝ć§ăăăă¨ćăăžăă ăăăŻĺĺăŤăăăăŤćăăăăăŽă§ăç§ăŻăăăé˛ăăšăéă§ăŻăŞăă¨č¨ăäşşăŤăŻăŞăăžăăă
@dstufft @xavfernandezčăďź
@ncoghlanăŽăăŤăăăŁăăˇăĽăŽă˘ă¤ăă˘ăŻăç§ăŤăŻčŻăă˘ă¤ăă˘ăŽăăăŤćăăžăăăăăŽăăšăŚăŽćĺłăç解ăăŚăăă¨ăŻč¨ăăžăăă
ĺż čŚăŤĺżăăŚăăăŽăăŠăłăă垊ĺ ăăŚăăăăăŠăźăŻăăŚPRă¨ăăŚé俥ă§ăăžăă
ăăăăćéăăŞăă§ăăăăăćéăăăŁăă¨ăăŚăăć˘ĺăŽăłăăăăĺĺŠç¨ăăŚăăŞăĺŻč˝ć§ăăăăžăă ăăăăăăŽăăŠăłăă垊ĺ ăăŚăĺéĄăŻăăăžăăă :)
ç§ăŽä¸ťăŞäşç´ăŻăPEP518ă使ç¨ăăăäşşăŤă¨ăŁăŚăăŽĺśéăăŠăăťăŠĺéĄăŤăŞăăăăăăŞăă¨ăăăă¨ă§ăă
ăăŞăăăăăăăăăçĽăăŞăăŁăăă¨ăé¤ăăŚăç§ăăĄăŻăăŽćŁç˘şăŞč°čŤăăăžăăă ăăŽăˇăăĽă¨ăźăˇă§ăłăŻăˇăăĽă¨ăźăˇă§ăłXă§ăăăăŤăç°ĺ˘ăăťăăă˘ăăăăăĺăŤegg_infoăĺźăłĺşăăŽăŻăăˇăăĽă¨ăźăˇă§ăłYďźďź4799ďźă§ăă
ăăăăăăăĺŽčŁ ăăăŽăŻç§ă§ăŻăŞăăŽă§ă誰ăĺŽčĄăăăăĺ¤ćăăŚĺăă§ăăžăă
ăăăŻďź4799ăăăźăăŤăŤćťăŁăăă¨ăćĺłăăă¨ćăăžăăďź ăăăăăšăŚăŽăăšăăŤĺć źăăăăăčĄăă¨ä¸ťĺźľăăŚăăăă¨ăĺŽčĄăăéăďź
ăăăăăăăŽXă¨YăŻĺăłç§ăćŠăžăăăăăŤćťăŁăŚăăžăďźwinkďźăŻăăç§ăŻ2ă¤ăŽăąăźăšăŽç¸ĺŻžçăŞĺŻč˝ć§ăŤă¤ăăŚăŽćčŚăăŞăă¨č¨ăŁăŚăăžăă ăă¤ăźăŤă§ăŻăŞăăăŤăčŚäťśăŻé常ăŤăžăă§ăăăăăăăŽăąăźăšăçĄčŚăăŚăĺéĄăŞăă¨ăăŁăăăŁăŚăăžăă ĺşćŹçăŤăç§ăăĄăŽéă§ă大ä¸ĺ¤Ťăă¨ăăăăăŞăăăŽć缨ă1ă¤ăă¤ăăăžăăă ç§ăŻăăŽăŞăăˇă§ăłăăăăăŻăăăă¨ăŻăăŚăăžăăăç§ăŽç´ćăŽéçăăŠăăŤăăăăč¨ăŁăŚăăă ăă§ăă
@xoviatăăă¤ă質ĺăăăăžăă ăăŞăăć°ăăPRăăăĺăŤăăŞăăăăăăŤçăăăŞăă°ăăăăŻç´ ć´ăăăă§ăăăă :)
ç§ăŻĺ¤ăăŽç§ĺŚăăă¸ă§ăŻăăŤćşăăŁăŚăăăŽă§ăĺčŚăăăăăăăăžăăă ăăăăăă¤ăźăŤăăŤăăŽäžĺé˘äżăćă¤ăăă¸ă§ăŻăăŽăŞăšăăăŹăŠăŹăŠă¨éł´ăăăă¨ăŻă§ăăžăăăă˝ăźăšăŽäžĺé˘äżăćă¤1ă¤ăŽăăă¸ă§ăŻăăćŹĺ˝ăŤčăăăă¨ăŻă§ăăžăăă ăăśăç§ăŻééăŁăŚăăžăă
@rgommers PEP 518ăŻă揥ăŽăăăăŤăăĺ ´ĺăŤăă¤ăźăŤă¨ăăŚĺŠç¨ĺŻč˝ăŞăăŤăäžĺé˘äżăŽăżăăľăăźăăăŚă大ä¸ĺ¤Ťă§ăăďź
ăŠăŽăăăąăźă¸ăă¤ăłăšăăźăŤăăăăăăŠăŽăăăŤĺ¤ćăăžăăďź
ăľăăăăťăšăŻăćĺŽăăăă¨ăăăŤčŚäťśăŞăšăăĺĺžăăžăă ăăăăă°ăăŞăžăŤăăźăééăăžăă
ăă¤ăăŞăŽăżăŽăăŤăäžĺé˘äżăŤĺśéăăžăăďź
ăŻăăăăăĺŽéăŤăăšăă夹ćăăççąă§ăă ăăšăăŽăăŤăäžĺé˘äżăŻăă¤ăźăŤă§ăŻăăăžăăă
äťčăăŚăżăă¨ăPEP518ăpip10ă§ĺşčˇăăăă¨ăŻăŠăăťăŠéčŚă§ăăďź ćŹĄăŽăĄă¸ăŁăźăŞăŞăźăšăžă§ĺťśćă§ăăă°ăďźăăŽçśćłăăç°ĄĺăŤćăĺşă䝼ĺ¤ăŤďźç°Ąĺă§ă517 +518ăŽä¸Ąćšă1ă¤ăŽĺ¤§ăăŞăŞăŞăźăšăŤĺ°éăăĺŻč˝ć§ăăăă¨ćăăžăă ăăăŻĺĺăŤăăăăŤćăăăăăŽă§ăç§ăŻăăăé˛ăăšăéă§ăŻăŞăă¨č¨ăäşşăŤăŻăŞăăžăăă
ăăă11ăŽPEP517ă¨518ăčĄăćéăŽăăäşşăăăăăŠăăăŤă¤ăăŚăç§ăăĄăŻăŠăŽăăăŤćăăŚăăžăăďź ç§ăŻćĽ˝čŚłçă§ăŻăăăžăăă ăŠăĄăă大ăăŞä˝ćĽăŽĺĄă§ăăăăăŤćăăăžăăăžăăăŞăžăŤăăźăŽä˝ćĽăé˛čĄä¸ă§ăă ç§ăŻăăă10ăĺż čŚäťĽä¸ăŤéˇăäżćăăăă¨ăŤčłćă§ăŻăăăžăăăăä¸éŁăŽćŹčłŞçăŤăă¤ăăźăŞăŞăŞăźăšăăŞăŞăźăšăăéă丝čŚăŞćŠč˝č¨çťăŽăăšăŚăăăŞăăăăăăă¨ăŤăĺć§ăŤä¸ĺżŤă§ăă
č¨ăćăăă°ăăăăă10ăŽăŞăŞăźăšăŤčĄăăăă¨č¨ăă¨ăPEP518ăŽä˝ćĽă垊洝ăăžăăă ăăăpip10ăăĺé¤ăăă¨ăç§ăŻăŞăŞăźăšăŽćşĺăŤéä¸ăăăă¨ăŤăŞăăPEP518ăĺăłĺ˘ăă夹ăĺŻč˝ć§ăéŤăă¨ćăăžăă çŠäşăĺăłć´ťĺăŤç§ťăăŤăŻăŠăăăă°ăăă§ăăďź @xoviatăŻĺŽčŁ ăŤĺăââçľăă§ăăžăăăăăăžă§čŚĺ´ăăŚăăĺéĄăäťăŽäşşăŤç解ăăŚăăăăŽăŤĺéĄăăăăžăăă äşĺşŚă¨ăăŁăźăăăăŻăŞăă§ĺ˝źăĺăăăăžăžăŤăăăăăăžăăă
ç§ăăĄăŤă§ăăăă¨ăŻăćşĺăć´ăŁăă¤ăłăŻăŞăĄăłăżăŤäżŽćŁă ăă§ăpip 9.1ăăăŞăŞăźăšăăăă¤ăăŠă¤ăłăŤăă3ă¤ăŽăăă°ăăąăăćŠč˝ďźăŽĺ°ăŞăă¨ă1ă¤ďźăŽĺŽčŁ ç¨ăŤăăźă¸ă§ăłçŞĺˇăpip10ăăäşç´ăăăă¨ă§ăă ăăăăăăăăăŞăă2018ĺš´ăŽçŹŹ1ĺĺćăŤpip10ăŽăŞăŞăźăšăç´ćăăăă¨ă芌ăżăăă¨ćăăžă[1]ăă˘ăăăźăă¨ăăŚăŻăăă§ĺ¤§ä¸ĺ¤Ťă§ăă ăăăăç§ăăĄăçžĺ¨ăăšăżăźă§ćăŁăŚăăé¨ĺçăŞăľăăźăăĺăćśăăŽăŤä˝ăé˘äżăăăŽăă誰ăăćăăŚăăžăăďź ăžăăŻăç§ăăĄăćăŁăŚăăăăŽă¨ăăŽĺśéăćć¸ĺăăéăŤďźäşşă ăăăăĺŽĺ ¨ă§ăăă¨äťŽĺŽăăŚăăă使ç¨ăăăă¨ăăŞăăăăŤăăă°ăčŚă¤ăăŚăăăăŽćŠč˝ăŻăžă ĺŽĺ ¨ă§ăŻăăăžăăăçłă訳ăăăžăăăăăăăăĺž ă¤ăă§ĺŻžĺżăăŞăăă°ăŞăăŞăĺéĄăć辡ăăžă10 "ďźďź ăă大ăăŞä˝ćĽăĺĽăŽä˝ćĽă¨äş¤ćăăŚăăă ăă§ăăďź
[1]ç§ăăĄăĺŠç¨ă§ăăăăšăŚăŽăăŽă¨ăăŚăé常ăŤéăăăăăŠăłăăŁă˘ăŞă˝ăźăšă§ä˝ăŤă§ăăłăăăă§ăăçŻĺ˛ă§ă
ç§ăŻĺ¤ăăŽç§ĺŚăăă¸ă§ăŻăăŤćşăăŁăŚăăăŽă§ăĺčŚăăăăăăăăžăă
ăăăă§ăäşşă ăŽčćŻăçĽăăŽăŻéŁăăăă¨ăăăăžăă ăăŞăăç§ĺŚăăă¸ă§ăŻăăŤç˛žéăăŚăăăŞăăăăăŻç§ăŽć¸ĺżľă大ăăŤčť˝ć¸ăăžăă
ç§ăăĄăŤă§ăăăă¨ăŻăćşĺăć´ăŁăă¤ăłăŻăŞăĄăłăżăŤäżŽćŁă ăă§ăpip 9.1ăăăŞăŞăźăšăăăă¤ăăŠă¤ăłăŤăă3ă¤ăŽăăă°ăăąăăćŠč˝ďźăŽĺ°ăŞăă¨ă1ă¤ďźăŽĺŽčŁ ç¨ăŤăăźă¸ă§ăłçŞĺˇăpip10ăăäşç´ăăăă¨ă§ăă
ç§ăŻćŹĺ˝ăŤăăă弽ăă§ăă ăăă10.0.0ă§ăŻăŞăăăă9.1.0ăŤ+1
2018ĺš´ăŽçŹŹ1ĺĺćăŤpip10ăŽăŞăŞăźăšăç´ćăăăă¨ćăăžă[1]ăă˘ăăăźăă¨ăăŚăŻăăă§ĺ¤§ä¸ĺ¤Ťă§ăă
ç§ăŻé常ăŤčĺłćˇąăčłćł˘ăćăŁăŚăăžăă-ăăăăŻ2018ĺš´10ć12ćĽăŤ10ćłăŤăŞăăžăăăăăŻăăă10.0.0ăŞăŞăźăšăčĄăăŽăŤćéŠăŞćĽäťă§ăă ăăăŻĺŽĺ ¨ăŤç°ăŞăăżă¤ă ăŠă¤ăłă§ăă ăăăžă§ăˇăă¤ăŤăŤăŽćŠč˝ăé ăăăăšăă ă¨č¨ăŁăŚăăăăă§ăŻăăăžăăăăç§ăŽä¸é¨ăŻăăăŽăăźă¸ă§ăłçŞĺˇă¨ĺš´é˝˘ăä¸č´ăăăăă¨ćăŁăŚăăžăă
PEP518ăĺăłĺ˘ăă夹ăĺŻč˝ć§ăéŤăă¨ćăăžăă
ç§ăŻăăăăăŞăăă¨ă確čŞăăăăăŤç§ăă§ăăăă¨ăăăžăă ăăžăăăă°ă@ xoviatăĺăă§ăăăăžăă :)
ç§ăăĄăçžĺ¨ăăšăżăźă§ćăŁăŚăăé¨ĺçăŞăľăăźăăĺăćśăăŽăŤä˝ăé˘äżăăăŽăă誰ăăćăăŚăăžăăďź
ććĽăŻăăăčŚăŚăć§ăăŞăă @dstufftăŻďź4144ă§ăŹăăĽăźăăăăăŽă ăŁăăŽă§ăăăăŤé˘ăă彟ăŽćčŚăŻäžĄĺ¤ăăăă¨ćăăžăă
注- @ dstufftă¨@xavfernandezăŽĺćăŞăăŤăçŠäşăĺăćśăăťăŠĺ¤§čăŞăă¨ăŻăăăăŞăăŽă§ă彟ăăŽçşč¨ăčŚăŚăżăžăăăă
@dstufftăŤăŻ1ćĽăŽćéăčśłăăžăăă 彟ăŻăžăăĺ庍ăăăŚăłăăŞăăă¨ă確čŞăăĺż čŚăăăăžăă
彟ăăä˝ăč¨ăăŞăăă°ăŞăăŞăăăčŚăŚăżăžăăăă
ăŻăăăéĄăăăžăă :)
UXăŽčŚłçšăăďźăäżĄé źăŽäżĄé źăćťćăŤĺ ćŹçăŤĺŻžćăăăă¨ăŻćŹĺ˝ăŤčŚçă§ă[1]ăăăăŚăç§ăŻăăšăŚăă˝ăźăšăăăłăłăă¤ăŤăăăă¨č¨ăĺ¤ăăŽäşşă ăĺŽéăŤăŻăăăăŚăăŞăăă¨ăŤć°äťăă§ăăă-彟ăăŽăăăťăšăŽăŠăăă§äťăŽčŞ°ăďźăŠăłăżă¤ă ç°ĺ˘ăăŞăăŹăźăăŁăłă°ăˇăšăă ăăăă¤ăăźăăăŽăăźăŤăă§ăźăłăŽăăŤăăŞăŠďźăăžăăŻĺä¸äťŁăŽçŹčŞăŽăăŠăăăăŠăźă ďźFedoraăŽć°ăăăăźă¸ă§ăłăŽăăŤăăŤăźăăŞăŠďźăăćäžăăăăă¤ăăŞăäżĄé źăăăăźăăšăăŠăăăšăăăăŤăŞăăžăă RHELăŻäťĽĺăŽăăźă¸ă§ăłăŽFedoraăăăłRHELăăăˇăźăăăăžăăăĺŽĺ ¨ăŤăźăăăéĺ§ăăăăă§ăŻăăăžăăďźă GentooăŽăăăŞă˝ăźăšăăźăšăŽLinuxăăŁăšăăŞăăĽăźăˇă§ăłă§ăăăLinuxăŤăźăăŤăCăłăłăă¤ăŠăăăźăăŚă§ă˘ăăŠă¤ăăŞăŠăĺăăĺŽç¨çăŞăăŤăç°ĺ˘ăćäžăăă¤ăłăšăăźăŠăźăăĺ§ăžăăžăă
ăăăăŁăŚăpip 10ăă --no-binary :all:
ăŻĺŽčĄćăŽäžĺé˘äżăŤăŽăżéŠç¨ăăăäžĺé˘äżăŽć§çŻăŤăŻéŠç¨ăăăŞăă¨č¨ăăŽăŻĺŽĺ
¨ăŤĺççă ă¨ćăăžăă äşşă
ăă˝ăźăšăăăăŤăăŤăźăăć示çăŤć§çŻăăăĺ ´ĺă§ăăăăăŻĺŻč˝ă§ă-ăăŤăäžĺé˘äżăŽćéťçăŞă˝ăźăšăăŤăăŽč¨ąĺŻăŤäź´ăĺşćăŽĺ帰çăŞăăźăăšăăŠăăĺéĄăŽăăăŤăpip10ăćéťçăŤčŞĺĺăăŞăă ăă§ăă
ăă ăăăăŤăç°ĺ˘ăĺŽĺ
¨ăŤäşĺć§ćăăăŚăăăă¨ăćĺž
ăăŚăăăă¨ă示ăăăăŤăă˝ăźăšăăŤăăŽä¸é¨ă¨ăăŚćéťçăŞăă¤ăăŞăăźăăšăăŠăăăĺż
čŚăŞĺ ´ĺăŻăă¤ăłăšăăźăŤăĺŽĺ
¨ăŤĺ¤ąćăăăĺĽăŽ--no-implicit-builddeps
ăŞăăˇă§ăłăčż˝ĺ ăăăŽăĺççă§ăă ă ăăăăă°ăăăšăŚăă˝ăźăšăăăăŤăăăăŚăăăă¨ă確čŞăăăă¨ăăŚăăäşşďźăăŤăăŽäžĺé˘äżăĺŤăďźăŻă揥ă¨ĺçăŽăă¨ăĺŽčĄă§ăăžăă
pip install --no-binary :all: --no-implicit-builddeps -r build-requirements.txt
pip install --no-binary :all: --no-implicit-builddeps -r requirements.txt
ăăăŚăćĺăŽă°ăŤăźăăCPythonă¨Python䝼ĺ¤ăŽăăŤăăăźăŤăă§ăźăłäťĽĺ¤ăŽăăŽăăăŹă¤ăłăšăăźăŤăăĺż čŚăăŞăăŞăăžă§ăĺż čŚăŞć°ăŽĺĺĽăŽă¤ăłăšăăźăŤă°ăŤăźăăĺŽçžŠăăžăă
ăăŽćŚĺżľăĺ°ćĽčŁĺŽăăĺŻč˝ć§ăăăăŽăŻăĺé˘ăăăç°ĺ˘ă§ĺăăŤăăĺŽčĄăăăŽă§ăŻăŞăă --buildenv <path>
ă¨č¨ăŁăŚăĺż
čŚăŞă˝ăźăšăăŤăăŤä˝żç¨ăăäşĺć§ćć¸ăżăŽăăŤăç°ĺ˘ăćĺŽă§ăăăăăŤăăăă¨ă§ăă ăă ăăăăăpip10ăŤĺăĺ
Ľăăăă¨ăŻăăžăăă10.xăăăă¤ăăŞăăŤăăŽäžĺé˘äżă訹ĺŻăăăŚăăăă¨ăăăăăăźăăšă¨ăăă¤ăăŞăăŤăăŽäžĺé˘äżăĺż
čŚăŞĺ ´ĺăŻăăŤăăŤĺ¤ąćăăăă¨ăă䝣ćżăŞăăˇă§ăłăŤĺśéăăăă¨ăăĺ§ăăăžăăçžĺ¨ĺŽčĄä¸ăŽă¤ăłăżăăŞăżă§ăŻăžă ĺŠç¨ă§ăăžăăăă
[1] https://www.schneier.com/blog/archives/2006/01/countering_trus.html
ç§ăŻĺĽăŽăŞăăˇă§ăłăčăăžăăăăăăŻĺççă§ăăăžăăŞăăĄăŻăżăŞăłă°ăĺż
čŚă¨ăăŞăă§ăăăăĺşćŹçăŤăăăŤăç°ĺ˘ăŽăťăăă˘ăăä¸ăŤăĄă¤ăłăšăŹăăăäżçăŤăăăăăŤăăŤăăšăŹăăă使ç¨ăăžăă ă˘ă¤ăă˘ăŻćŹĄăŽăăăŞăăŽă§ăinstall.py
ăŤăŻă BuildEnvironmentManager
ăăăăžăă
class BuildEnvironmentManager(Thread):
'''Has references to literally everything (cache, resolver, etc.)'''
def run(self):
while True:
requirement_list, future = self.build_environment_queue.get()
# install the requirements using all of the things
# that we have
# then put the build environment in the future
future.put(BuildEnvironment())
揥ăŤăĺĽăŽăăĄă¤ăŤăä˝ćăăăžăďźbackend.pyăŻĺĺăŤăăŁăąăă§ăŻăŞăăăăăăăăĺ¤ăăŽăăŽă使ç¨ă§ăăĺŻč˝ć§ăăăăăăŞăźăŽä¸çŤŻăŤăăăăăbackend.pyă使ç¨ăăžăďźďź
class Future(Queue):
pass
class BuildEnvironmentQueue(object):
def __init__(self):
self._queue = Queue()
def request_build_environment(self, requirement_list):
f = Future()
self._queue.put((requirement_list, f))
return f.get()
def get():
return self._queue.get()
ăăăŚoperations / prepare.pyă§ďź
# This call will put the thread to sleep until we have a build environment
# with the requirements installed
self.build_environment_queue.request_build_environment(requirement_list)
ăăăŤăŻăćĺ°éăŽăŞăăĄăŻăżăŞăłă°ăĺż
čŚă§ăăăăˇăŞă˘ăŤĺăăăBuildEnvironmentManager
ăăăďźăăŤăç°ĺ˘ăćéŠĺă§ăăĺä¸ăŽăŞăă¸ă§ăŻăă§čĄăăăčŚćąăćŁç˘şăŤććĄă§ăăďźăăăšăŚă1ă¤ăŽăăăťăšăŤĺŤăăăă¨ăă§ăăă¨ăăĺŠçšăăăăžăďźăăăăŁăŚăććŞăŽăˇăăŞăŞăŻăăăăăăŻă§ăďźă ăăĄăăăäťăŽăšăŹăăă§ăŻăăŽăłă°ăçĄĺšăŤăăĺż
čŚăăăăžăăăăăăŻăăăťăŠĺéĄă§ăŻăăăžăăă
queue.QueueăăźăšăŽă˘ăăăźăăŤé˘ăăç§čŞčşŤăŽčłŞĺăŤçăăďźăăă使ç¨ăăăŤăŻPython 2.7ă§https://pypi.org/project/futures/ăăăłăăźĺăăĺż čŚăăăăăăconcurrent.futuresăŤäžĺăăăă¨ăŻéżăăăŽăćĺă§ăă
pip
ăłăźăăăźăšăăăçĽăăŞăăŚăăăăŤăç°ĺ˘çŽĄçă1ăćăŤçľąĺââăăă¨ăăćŚĺżľăŻé
ĺçăŞăŞăăˇă§ăłăŽăăăŤćăăăžăă
ăăŽă˘ăăăźăăŤăŻconcurrent.futures
ăŻĺż
čŚăăăžăăă Future
ăŻăăă誏ćçăŞăŠăăăźă§ăă
ĺż čŚăŞăăŞăăăŁăăŻăăĽăźăŽăżă§ăďź https ďź//docs.python.org/2/library/queue.html
ăăăăŽčĄăBuildEnvironmentManager
ăŤç§ťĺă§ăăă¨ćăăžăă
ç§ăŻĺ¤ăăŽç§ĺŚăăă¸ă§ăŻăăŤćşăăŁăŚăăăŽă§ăĺčŚăăăăăăăăžăăă ăăăăăă¤ăźăŤăăŤăăŽäžĺé˘äżăćă¤ăăă¸ă§ăŻăăŽăŞăšăăăŹăŠăŹăŠă¨éł´ăăăă¨ăŻă§ăăžăăăă˝ăźăšăŽäžĺé˘äżăćă¤1ă¤ăŽăăă¸ă§ăŻăăćŹĺ˝ăŤčăăăă¨ăŻă§ăăžăăă ăăśăç§ăŻééăŁăŚăăžăă
ăăă¨ă[WindowsămacOSăLinux]䝼ĺ¤ăŽăăšăŚăŽOSăăăăIIRCăŻmanylinux1
ă§ăŤăăźăăăŚăăžăăă
@rgommers PEP 518ăŻă揥ăŽăăăăŤăăĺ ´ĺăŤăă¤ăźăŤă¨ăăŚĺŠç¨ĺŻč˝ăŞăăŤăäžĺé˘äżăŽăżăăľăăźăăăŚă大ä¸ĺ¤Ťă§ăăďź
ç§ăŽéťčŠąă§ăŻăăăžăăăăăăă§ä¸ćŠĺé˛ă§ăăă°ĺš¸ăă§ăă ă¨ăŤăăPEP518ăŽăľăăźăăŻăŞăăˇă§ăłă§ăăăăăpip 10ă§ăă¤ăźăŤă使ç¨ĺŻč˝ăŞĺ ´ĺďźç§ăč¨ăăąăźăšăŽ90ďź äťĽä¸ăăŤăăźďźăŤăŽăżćŠč˝ăăăă¨ăŻăäžçśă¨ăăŚĺ¤§ĺš ăŞćšĺă§ăă
PyPIă§ăă¤ăźăŤă訹ĺŻăăŞăăăŠăăăăŠăźă ă§ăăăăźăŤăŤăă¤ăźăŤăăŁăăˇăĽăćŽăŁăŚăăăă¨ăŤćł¨ćăăŚăă ăăăă¤ăžăăpipăćéťçăŤăăźăăšăăŠăăă§ăăŞăĺ ´ĺă§ăăăăăăĺ°ĺˇăăŚăăăăăŽăăŤăäžĺé˘äżăä˝ăăăŽćšćłă§ă¤ăłăšăăźăŤăăăă¨č¨ăăă¨ăă§ăăĺ ´ĺăăăăžăă ăăăăŚăăăŻăăžăăăă§ăăăăă
ăăăăç§ăăĄăçžĺ¨ăăšăżăźă§ćăŁăŚăăé¨ĺçăŞăľăăźăăĺăćśăăŽăŤä˝ăé˘äżăăăŽăă誰ăăćăăŚăăžăăďź
ç§ăŻăăă調ăšăžăăă ăăăťăŠéŁăăăă¨ă§ăŻăŞăăăă§ăă ç§ăăĄăăăŽăăăŤčĄăăă¨ăŤćąşăăăăç§ăŻăăăŽăăăŤPRăăăăă¨ăĺŹăăćăăžăă
ăăă10.0.0ă§ăŻăŞăăăă9.1.0ăŤ+1
ç§ăŻă¤ăăŤdistutils-sigăšăŹăăăćŁăăčŞăżăé˘éŁăăPRă¨ăăŁăšăŤăăˇă§ăłďźďź4351ăďź4144ăďź4799ăŞăŠďźăčŚăćéăă§ăăžăăă ăăă10ăçşčĄ¨ăăŚăăă ă¨ćăăžăă ăăăŻăé¨ĺçăŞPEP518ăľăăźăďź9.1.0ă§ăŻăŞăďźă使ç¨ăăŚčĄăĺż čŚăăăăă¨ă§ăă
ăăŽăăźă¸ă§ăłçŞĺˇă¨ĺš´é˝˘ăŻä¸č´ăăăăŽ
ćŽĺżľă :(
@ncoghlanĺ¤ĺăăŽăłăĄăłăăŻăŹăźăăźăŽä¸ăŤćťăčžźăă -https ďź //github.com/pypa/pip/pull/4799#issuecomment -338416543
ăăă§ăŞăĺ ´ĺăŻăăŞăăăăćŠč˝ăăŞăăŽăă誏ćăăŚăăă ăăă°ĺš¸ăă§ăăç§ăŻăăŽç¨ŽăŽăťăăă˘ăăăăăç¨ĺşŚç解ăăŚăăăăăăŤă¤ăăŚăăŁă¨ĺŚăśăă¨ăŤééăăŞăăŞăźăăłă§ăă :)
@pradyunsgăăăŻăăŤăăăŁăăˇăĽăŽă˘ă¤ăă˘ăŽçšĺŽăŽĺŽčŁ ă§ăăăăăăťă¨ăăŠćŠč˝ăăă¨ćăăžăă ăăăăŤăăźăăŚăăŞă1ă¤ăŽĺ´é˘ăŻăăăă§ăŤăăŤăăăăă¨ăăŚăăăăŽăăăŤăăăăăăŤćąăăăăăăă¨ăć¤ĺşăăćšćłăăŞăăăăäžĺé˘äżăŤăźăăăăŤăăăăă¨ă§ăă
pipăŻäžĺé˘äżăŤăźăăéćłăŽăăăŤč§Łćąşăăĺż čŚăŻăŞăăă¨ăŤćł¨ćăăŚăă ăăăĺŽéăŤçĄéăŤăźăăŤĺ ĽăăŽă§ăŻăŞăăäžĺé˘äżăŤăźăăć¤ĺşăăŚăčŚă¤ăăăăăăŤĺ¤ąćăăĺż čŚăăăăžăă
äžĺé˘äżăŽăŤăźăăć§çŻăăăă¨ăŻăŤăăźăăŚăăžăăă
ăăăŻăăă¤ăăŞăŽăżăŽăăŤăäžĺé˘äżă§ăŻçşçăăžăăăďź
@pradyunsgăŞăłăŻăăăăłăĄăłăăŻăăăŤăäžĺé˘äżăŽă˝ăźăšăăŤăă訹ĺŻăăćšćłăŤé˘ăăăăŽă§ăăăă¤ăžăă垪ç°äžĺé˘äżăć˝ĺ¨çăŞć¸ĺżľäşé
ăŤăŞăă¨ăăăă¨ă§ăă ăă¤ăăŞäžĺé˘äżăĺż
čŚăŞĺ ´ĺă pip
ăŻĺ˝é˘ăŻć˘ĺăŽăă¤ăźăŤăăŁăăˇăĽăŤäžĺă§ăăžăă
ăăă ăă ăăăă¨ăďź :)
é¨ĺçăŞPEP518ăŽĺŽčŁ ăăă¤ăăŞăăŤăăŽäžĺé˘äżăŽăżăŤĺśéăăăŚăăďźăžăăŻăă§ăŤpipăă¤ăźăŤăăŁăăˇăĽă§ĺŠç¨ĺŻč˝ă§ăăďźpip 10ăćŻćăăŚăăăŽăŻăăăăăăšăŚĺŤăžăăŚăăĺ ´ĺă§ăă
ăšăŹăăĺ ¨ä˝ăăžă čŞăă§ăăžăăăăăă¤ăăŞăăŤăăŽäžĺé˘äżăŤĺśéăăăă¨ăŽ1ă¤ăŽĺŻä˝ç¨ăŻăĺ¤ăăŽĺ ´ĺăăăŤăăŽäžĺé˘äżăŤCăŽäžĺé˘äżăćăăăăă¨ăä¸ĺŻč˝ăŤăŞăăă¨ă§ăă ăŻăăWindowsămacOSăăăăłä¸é¨ăŽLinuxăăźă¸ă§ăłăŤăŻăă¤ăăŞăă¤ăźăŤăăăăžăăă揥ăŽăăŽăŻăăăžăăă
ăăăŻăăă¨ăă°CFFIăăźăšăŽăăă¸ă§ăŻăă§ăŻăPEP 518ă使ç¨ă§ăăŞăăăăăăăŽăăŠăăăăŠăźă ă§ă˘ăłă¤ăłăšăăźăŤă§ăăăă¨ăćĺłăăžăă
ăăăŻăă§ăŤć辡ăăăŚăăăăăăăžăăďź ăăŽăšăŹăăăŻĺžă§čŞăżăžăă
@dstufftăăŽéăă§ăă ăăăăç§ăăĄăććĄăăŚăăăŽăŻăpipăăŁăăˇăĽăŽä˝żç¨ăŻăŞăăˇă§ăłă§ăăă¨ăăăă¨ă§ăă ăăăăŁăŚăćĺăŤăăŤăăŽäžĺé˘äżăpip wheel
ăžăăŻpip install
ăăă ăă§ăăăăăŻăăŁăăˇăĽăŤäżĺăăăžăă
ăăăŻăă§ăŤć辡ăăăŚăăăăăăăžăăďź
ăăăă :)
ăăăŻăăă¨ăă°CFFIăăźăšăŽăăă¸ă§ăŻăă§ăŻăPEP 518ă使ç¨ă§ăăŞăăăăăăăŽăăŠăăăăŠăźă ă§ă˘ăłă¤ăłăšăăźăŤă§ăăăă¨ăćĺłăăžăă
ăăăŻăăă :-(
ç§ăŽé ăŽä¸ă§ăăăĺéżăăćšćłăŻăPEP 518ăŽĺä˝ăăŞăăă¤ăłăŤăăăă¨ă§ă- pyproject.toml
ăăĄă¤ăŤăăăĺ ´ĺăŻăĺé˘+ăăŤăç°ĺ˘ă使ç¨ăăžăăăă䝼ĺ¤ăŽĺ ´ĺăŻă setup.py
ă使ç¨ăăçžĺ¨ăŽĺä˝ăŤăăŠăźăŤăăăŻăăžăă
ăăŽăšăŹăăăŻĺžă§čŞăżăžăă
ăăŚăă ăăă :)
ăăăŤăă¨ăžăŁăăĺăăłăĄăłăăăăăžăăă ăăŽăšăŹăăăŤă¤ăăŚăŽç§ăŽç解ăŻăpip 10ăŤĺŽčŁ ăăćéăăŞăăăăăă¤ăăŞăŽăżăŻä¸ćçăŞăăŽă§ăăă¨ăăăă¨ă§ăăćŁăăă§ăăďź
䝣ăăăŤćäš çăŞćąşĺŽă¨ăăŚććĄăăăĺ ´ĺăŻăăăĄăă-1ă§ăă
ăăăŤăă¨ăžăŁăăĺăăłăĄăłăăăăăžăăă ăăŽăšăŹăăăŤă¤ăăŚăŽç§ăŽç解ăŻăpip 10ăŤĺŽčŁ ăăćéăăŞăăăăăă¤ăăŞăŽăżăŻä¸ćçăŞăăŽă§ăăă¨ăăăă¨ă§ăăćŁăăă§ăăďź
ăăŽă¨ăăă§ăă pip
ăŻă˝ăźăšăŽäžĺé˘äżăăľăăźăăăĺż
čŚăăăăžăăăäşşĺĄăä¸čśłăăŚăăžăă
ç§ăŽé ăŽä¸ă§ăăăĺéżăăćšćłăŻăPEP 518ăŽĺä˝ăăŞăăă¤ăłăŤăăăă¨ă§ăăpyproject.tomlăăĄă¤ăŤăăăĺ ´ĺăŻăĺé˘+ăăŤăç°ĺ˘ă使ç¨ăăžăăăă䝼ĺ¤ăŽĺ ´ĺăŻăsetup.pyă使ç¨ăăçžĺ¨ăŽĺä˝ăŤăăŠăźăŤăăăŻăăžăă
ç§ăŻăăŽăłăĄăłăăčŞăżç´ăăžăăăăăăŚç§ăŻăăă§ĺ寞ăăă¤ăăă§ăă PEP 518ăŽăľăăźăăŻăŞăăˇă§ăłă§ăŻăăăžăăďźPEP 517ăŤé˘éŁăăĺŽčŁ ä¸ăŽççąăăďźIMHOă§ăăăăăăăŽăăŠăăăăŠăźă ă§ăăă¸ă§ăŻăăă˘ăłă¤ăłăšăăźăŤĺŻč˝ăŤăăŞăă§ăă ăăă
ăăĺ ˇä˝çăŤăŻăă¤ăłăšăăźăŤăăçšĺŽăŽăăă¸ă§ăŻăăŻăPEP 518ăĺĺžăăăăŠăăăćąşĺŽăăăšăă§ăŻăăăžăăăăăăŻăăăŤăăŽäžĺé˘äżăăă¤ăźăŤă¨ăăŚä˝żç¨ĺŻč˝ăăăŁăăˇăĽĺ ă§ä˝żç¨ĺŻč˝ăăŤăăŁăŚćąşĺŽăăăžăă ăăăŤă揥ăŽăăăŞăĄăăťăźă¸ăĺăĺşăă ăă§ăăăăăŽăăŠăăăăŠăźă ă§ăPEP518ăľăăźăăĺż é ăŤăăăă¨ăă§ăăžăă
Error: build dependency X is not in the pip cache. Run "pip install X" before installing Y.
ç§čŞčşŤăŽčŚçšăčŚç´ăăă¨ďź
python -m pip wheel X Y Z
ăłăăłăăĺşĺăăăă¨ăŻăpipă誤ăŁăŚăăˇăłăăăŠăźăŻçĺźžăăăă¨ăăŞăăăăŤăăăăăçžćçšă§ăŻéŠĺăŞĺéżçă§ăăpyproject.toml
ăăĄă¤ăŤăĺŤăžăăŚăăŞăéăăăžăăŻăłăăłăăŠă¤ăłăăĺé˘ăăŤăăć示çăŤčŚćąăăăŚăăŞăéăăĺé˘ăăŤăăŻăăăăăžă ăăăŠăŤăă§ăŻăăăžăăă ć˘ĺăŽăăă¸ă§ăŻăăŻĺé˘ăăăŚăăŞăĺä˝ăćĺž
ăăăăăăăăŻä¸ä˝äşćć§ăŽĺéĄă§ăă ĺé˘ăăăăăŤăăăŞăŞăźăšăžăăŻ2ă¤ă§ĺŠç¨ĺŻč˝ăŤăŞăăăăăăŽăŚăźăśăăŞăăŁăŽĺéĄă解湺ăăăă¨ăăăăăŻä¸čŹçăŤăăăŠăŤăăŤăŞăĺŻč˝ć§ăăăăžăďźăăăăăĺé˘ăăăăăŤăăćéťçăŤçćăăăŽă§ăŻăŞăă使ç¨ăăçšĺŽăŽăăŤăç°ĺ˘ăćĺŽăăăłăăłăăŠă¤ăłăŞăăˇă§ăłă使ç¨ăăžăďźăăŽďź@ncoghlanĺżľăŽăăăŤč¨ăŁăŚăăăžăăăăăăŠăŤăăŽăăŤăĺé˘ăăŞăă¨ăăăă¨ăŻăPEP 517ăăŞăăă¨ăćĺłăăžăďźĺ°ăŞăă¨ăç§ăŽă˘ăăăźăă§ăŻďźăăăăŻăsetuptoolsăŽćć°ăăźă¸ă§ăłăŽăżăăľăăźăăăŚăăăăă§ăďźăŚăźăśăźăŽăăźă¸ă§ăłăŤé˘äżăŞăăć°ăăsetuptoolsăă¤ăłăšăăźăŤăăĺż čŚăăăăžăďźăăłăłăăĽăźăżăźďźă ĺŽéăŤăŻăPEP 517ăŽĺŽčŁ ăŤĺż čŚăŞĺ´ĺăĺçăŤĺ˘ĺ ăăăăďźPEP517ăăăłéPEP517ăłăźăăĺż čŚďźăPEP517ăĺ°ăŞăă¨ă1ĺš´é ăăĺŻč˝ć§ăăăă¨ćăăžăă
ć˘ĺăŽăăă¸ă§ăŻăăŻĺé˘ăăăŚăăŞăĺä˝ăćĺž ăăăăăăăăŻä¸ä˝äşćć§ăŽĺéĄă§ăă
ăťă¨ăăŠăŽäşşăŻă pip install X
ăĺŽčĄăăŚpip install Y
ăĺŽčĄăăCIăšăŻăŞăăăćăŁăŚăăžăă ăăăăŽăăă¸ă§ăŻăă§ăŻă pypproject.toml
ăčż˝ĺ ăăĺż
čŚăăăăžăă ăă ăă pyproject.toml
ăčż˝ĺ ăăăŽăŻăăăťăŠćéăăăăăŞăăăăĺż
čŚăŤĺżăăŚăłăăłăăŠă¤ăłăăŠă°ăčż˝ĺ ăăŚăăŤăăŽĺé˘ăçĄĺšăŤăăăă¨ăă§ăăžăă
ăăă¸ă§ăŻăăŽpip10ăŤpyproject.toml
ăăŞăĺ ´ĺăŻăĺ°ăŞăă¨ăčŚĺăçşăăĺż
čŚăăăăžăďźPEP 517ăŻăľăăźăăăăŞăăăă§ăďźă
@xoviat ă調ć´ăăăŽăŤăăăťăŠĺ¤ăăŽä˝ćĽăŻĺż
čŚăăăžăăăăŻăä¸ä˝äşćć§ăăŠăŽăăăŤćŠč˝ăăăă§ăŻăăăžăăă ăăăăăŞăăpipăŻäťă§ăŻăăăŠăŤăăŽévenvă¤ăłăšăăźăŤă˘ăăŤă¨ăăŚ--user
ăŤĺăćżăăŚăăă§ăăă:)
PEP 517ăŤé˘ăăéăă pyproject.toml
ăăĄă¤ăŤăčż˝ĺ ăăăŤăăăąăźă¸ăăăŞăăˇăŁăźă¨ăăŚPEP 517ăŤäžĺăăăă¨ăŻă§ăăŞăăăă setup.py
ăŽăżăŽăăă¸ă§ăŻăăPEP517ăľăăźăăĺĺžăăŞăĺ ´ĺăŻĺéĄăăăžăăăăăăŠăŤăă§ăŻă
čŚĺăĺăăŚă大ä¸ĺ¤Ťă§ăăďź
ăăă¸ă§ăŻăčŞä˝ăăăŽäžĺé˘äżăĺ¤ć´ăăăŚăăŞăăŚăăpipăă˘ăăă°ăŹăźăăăăă¨ăăççąă ăă§ăçžĺ¨ćŁĺ¸¸ăŤĺä˝ăăŚăăăăŤăăčŚĺăçşăĺ§ăăĺ ´ĺăĺéĄă¨čŚăŞăăăžăă
PEP 518ăăăł517ăŻăé˘äżăăăăšăŚăŽăăăŞăăˇăŁăźăĺźăçśăsetuptoolsăŽăżăŤäžĺăăŚăăć˘ĺăŽăăă¸ă§ăŻăăŽä¸ćăăźăăŤăăăăăŤćĺłçăŤč¨č¨ăăăžăăă
pip
ăăsetuptoolsăăźăšăŽăăă¸ă§ăŻăă§ăăŁăŚăĺä¸ăŽPEP 518ăăŤăăăšăŤçľąĺăăăă¨ăçŽćăăŽăŻçăŤăăŞăŁăŚăăžăăăăăŽăăăŽćéăŻăĺé˘ăăăăăŤăăăŞăŞăźăšăžăăŻ2ă¤ăŽäžĄĺ¤ăŽăăĺŽç¨çăŞăăŽăčŚăĺžă§ăăăăăăăžăŁăăăľăăźăăăćĺăŽăăźă¸ă§ăłă§ă
ăăăŤăă¨ăžăŁăăĺăăłăĄăłăăăăăžăăă ăăŽăšăŹăăăŤă¤ăăŚăŽç§ăŽç解ăŻăpip 10ăŤĺŽčŁ ăăćéăăŞăăăăăă¤ăăŞăŽăżăŻä¸ćçăŞăăŽă§ăăă¨ăăăă¨ă§ăăćŁăăă§ăăďź
ăăă ăăŽéăă
ăťăăă˘ăăăăźăŤăăźăšăŽăăă¸ă§ăŻăă§ăăŁăŚăăpipăĺä¸ăŽPEP 518ăăŤăăăšăŤçľąĺăăăă¨ăçŽćăăŽăŻçăŤăăŞăŁăŚăăžăăăăăŽăăăŽćéăŻăćĺăŽăăźă¸ă§ăłă§ăŻăŞăăĺé˘ăăăăăŤăăăŞăŞăźăšăžăăŻ2ă¤ăŽäžĄĺ¤ăŽăăĺŽç¨ĺă確čŞăăĺžă§ăăăăăăăăšăŚăľăăźăăăžăă
+1
2ă¤ăŽăĄă¸ăŁăźăŞăŞăźăšăŽăăăŤăĺ¤ăăăšăĺé¤ăăăă¨ăçŽćăăšăă ă¨ćăăžăă ăăăăĺŽĺ ¨ăŤçĺ°ăăă¨ăăéŠĺăŞPEP518ăľăăźăă ĺ¤ăăăŤăăă¸ăăŻăéć¨ĺĽ¨ăŤăăć¨ćşăŽéć¨ĺĽ¨ăăŞăˇăźăŤĺžăŁăŚĺé¤ăăĺż čŚăăăăžăă
ăăăŻăŽčŚç´ăŤĺćăăžă...
ăăăŻăăăĺŽčŁ ăăăăăŤĺż čŚăŞĺ´ĺăŽéăĺçăŤĺ˘ĺ ăăăăăă§ă
ăăăăăăŽćšćłă§PEP518ăĺŽčŁ ăăăă¨ăŤăŻă大ăăŞé厳ăŻăŞăă¨ćăăžăă ăăăpipĺ ăŤĺŽčŁ ăăćšćłăŤă¤ăăŚă httpsďź //github.com/pypa/pip/pull/4799#issuecomment-339219397ăŤçăăłăĄăłăăăăžăăă
ç§ăăĄăăăăăăŽăŻăĺ¤ăăăŽăăć°ăăăăŽă¸ăŽăŻăŞăźăłăŞç§ťčĄăäşşă ăŤćäžăăăă¨ă§ăă ăăăăŁăŚăçžĺ¨ăŽpip 9ă¤ăłăšăăźăŤăă¸ăăŻăĺ¤ć´ăăŞăă§ăăĺż čŚăăăăžăăăăăŤăăăĺşćŹçăŤăçžĺ¨čĄăŁăŚăăăăšăŚăŽăă¨ăćŁç˘şăŞćšćłă§ăľăăźăă§ăăžăă
ă˘ăźăŤă¤ăăŤpyproject.toml
ăăĄă¤ăŤăĺ
Ľăăă¨ăăăă¨ăŻăăăăąăźă¸ăć°ăăć¨ćşăŤăŞăăă¤ăłăăŚăăŚăć°ăăĺä˝ăŽăľăăźăăăăšăăăç¨ćăăăăă¨ăćĺłăăžă-ĺé˘ă¨ăă¤ăăŞăŽăżăŽăăŤăă§ăăŤăç°ĺ˘ăééăăžă-äžĺé˘äżďźäťăŽă¨ăăďźă
ăăăăăăŽćšćłă§PEP518ăĺŽčŁ ăăăă¨ăŤăŻă大ăăŞé厳ăŻăŞăă¨ćăăžăă
ăăă§PEP517ăŤă¤ăăŚčŞŹćăăžăă 桡䚹ăăăŚçłă訳ăăăžăăă
严ćšăŽăłăźăăăšăăă§ăăŻăăăŤăŻăăăšăă2ĺĺŽčĄăăĺż čŚăăăăžăă ăăăPEP517ăŻăăăăĺťśćăăăŚăăžăă
IMOă
pyproject.toml
ăăŞăĺ ´ĺăŽčŚĺăŻăé常ăŤćŞăčăăŽăăăŤčăăăžăă çľĺąăŽă¨ăăăPyPIăŽăăă¸ă§ăŻăăŽ99ďź
ăŤăŻçžĺ¨pyproject.toml
ăăŞăăă¨ăłăăŚăźăśăźăŤä˝ăă§ăăŞăă¨ăăčŚĺăăšăă ăăăă¨ăŻă§ăăžăăďźăăă¸ă§ăŻăăŤĺéĄăĺ ąĺăă䝼ĺ¤ăŻďź ďźä˝ăăčśłăăžăăăďźç§ăŻä˝ăăčśłăăŞăăŽă§ăăďź
ăăăă
ćĺăŻPEP518ă ăă§ăăă§ăźăş2ă¨ăăŚĺé˘ăčż˝ĺ ăăŚăĺéĄăăăžăăă
PEP 518ăĺŽčĄăăŚăĺé˘ăä¸çˇăŤăăŤăăăĺż čŚăăăă¨ćăăžăăăăăŻăäşşă ăŤĺé˘ăăŤăăŤĺăćżăăăăăŽĺŞăăćšćłă ăăă§ăă
PEP518ăPEP517ăĺé˘ăăŤăăĺż čŚă¨ăăžăăăăPEP 517ăŻăéŠĺăŞççąăăăăăăć¨ĺĽ¨ăăŚăăžăďź https ďź//www.python.org/dev/peps/pep-0517/#recommendations -for-build-frontends-non-normative
ăăźăŤăŤăŽăă¤ăăŞă˘ăźăăŁăăĄăŻăăăŁăăˇăĽăăŞăă¨ăĺé˘ăăăăăŤăç°ĺ˘ăŻĺŽç¨çă§ăŻăăăžăăăăďź pip
ăŽăăăŤďźăăăăŽ1ă¤ăĺĺžăăă¨ă揥ăŽççąă§ăŻăăăŤĺŽçžĺŻč˝ăŤăŞăăžăă
ĺćăŤăĺé˘ăăăăăŤăç°ĺ˘ă§ăŻăăă°ăŽăăăĄăżăăźăżăăăăŞăăˇăŁăźčŞčşŤăŽăăŤăăĺŁăăăăăŤăăŽäžĺé˘äżăĺŽĺ ¨ăŤĺŽŁč¨ăăăŚăăžăăăă¨ć示çăŤč¨ăĺż čŚăăăăăăăăăŞăăˇăŁăźăŽä˝ćĽăĺ°ăĺż čŚăŤăŞăăžăăăăŤăăčĄăăžăă
ăăăăŁăŚă pyproject.toml
ăăźăšăŽăăŤăăćĺăăĺé˘ăăăă¨ă§ăčŞçśăŞĺăćżăăă¤ăłăăćäžăăăžăăăăăŻăPEPĺ
¨ä˝ăăĺŽčĄćăŽäžĺé˘äżă¨ăŻĺĽăŤăăŤăăŽäžĺé˘äżăć確ăă¤ä¸č˛ŤăăŚĺŽŁč¨ăăćšćłăćäžăăăă¨ăçŽçă¨ăăŚăăăăă§ăă ă¤ăžăă setup.py
ăăĺăćżăăäşşăŻăăăăăăăŽăăăŞăă¨ăć°ăŤăăăŚăăăăă§ăăăć°ăăăăă¸ă§ăŻăăŽăăăŤć°ăăăăŁăŚăăäşşăŻăăăăąăźă¸ăăźăŤăă¸ăŁăłăăăăă¨ă瞊ĺäťăăŚăăĺĽăŽăăźăă¨ăăŚćąăăžăăçľăăă
ăăăăŁăŚăăłăźăăŽč¨čż°ăŤĺăćăăĺăŤç˘şčŞăăăăă¨ăăăă¤ăăăăžăă
pyproject.toml
çľçąă§ăŞăăă¤ăłPEP 517ăŻăžă ćşĺăă§ăăŚăăŞăăăăpip 10ăŽăăăăŤăźăŤăŞăăă¨ăŻă§ăăžăăăăžăăăăŽćçšă§ĺćšă¸ăŽć確ăŞăăšăŻăăăžăăďźĺćšă¸ăŽăăšăŻăăăžăăăć確ă§ăŻăăăžăăďźă
@xoviatăŽăłăĄăłăăŤĺżăăŚăĺŽčŁ ăŽčŞ˛éĄăčŚç´ăăăăŽăšăŹăăăăă°ăăčŞăă ĺžăăłăĄăłăă¨čłŞĺăăăăžăă
ăžăăççşăăĺŻč˝ć§ăŽăăăăŽăŽĺ帰ăŽĺéĄăŤé˘ăăŚăŻăä¸čŹăŤăĺ帰é˘ć°ăŻăăšăŚĺ垊é˘ć°ăŤăĺ¤ćăă§ăăžăă ăăŽă˘ăăăźăăăăĺ¤ăăŽĺśĺžĄăćäžăăăă¨ăŤăăŁăŚăăă§ĺ˝šçŤă¤ăă¨ăă§ăăăăŠăăçĺăŤćăăžăă
揥ăŤăPythonĺ ăăpipé˘ć°ăĺźăłĺşăăŽă¨ăŻĺŻžç §çăŤăăˇă§ăŤă˘ăŚăăŻä˝ăčłźĺ Ľăăžăăďź ăˇă§ăŤă˘ăŚăăéćăăăă¨ăăŚăăăă¨ăăăšăŚĺŽčĄăăĺ é¨APIé˘ć°ăä˝ć/ăŞăăĄăŻăżăŞăłă°ă§ăăŞăăŁăççąăŻăăăžăăďź ăăăŤăăăďźCLIăăŠăĄăźăżăźă¨ćŻčźăăŚďźĺźăłĺşăăĺźăłĺşăéăŽćčťć§ăĺä¸ăăžăă ăăăŤăăăăăăťăšĺ ¨ä˝ăŽçść ăăăç°ĄĺăŤçŽĄçă§ăăăăăŤăŞăăăăăă芳細ăŞĺśĺžĄăĺŻč˝ăŤăŞăăžăă
ăˇă§ăŤă˘ăŚăăéćăăăă¨ăăŚăăăă¨ăăăšăŚĺŽčĄăăĺ é¨APIé˘ć°ăä˝ć/ăŞăăĄăŻăżăŞăłă°ă§ăăŞăăŁăççąăŻăăăžăăďź
揥ăŤăPythonĺ ăăpipé˘ć°ăĺźăłĺşăăŽă¨ăŻĺŻžç §çăŤăăˇă§ăŤă˘ăŚăăŻä˝ăčłźĺ Ľăăžăăďź
ăăăŻç§ăăĄăçžĺ¨ćăŁăŚăăŞăćéă財ăăžăă pip
ăŻăă§ăŤăŞăŞăźăšăšăąă¸ăĽăźăŤăăé
ăăŚăăžăă
ăžăăççşăăĺŻč˝ć§ăŽăăăăŽăŽĺ帰ăŽĺéĄăŤé˘ăăŚăŻăä¸čŹăŤăĺ帰é˘ć°ăŻăăšăŚĺ垊é˘ć°ăŤăĺ¤ćăă§ăăžăă
ç§ăŻĺĺ帰ă§ăŻăăăžăăă ç§ăŻĺăăăťăšĺ帰ă§ăă 100ďź ăŽCPUďźPythonă§ăŻ20ďź ďźă使ç¨ăăĺ ´ĺăŻĺéĄăŞăă¨ćăăžăăăćçľçăŤăŻăăŚăźăśăźăăżăšăŻăăăźă¸ăŁăźăéăăŚăăăăŤăăć大15ăŽăăăťăšă埡ĺśçľäşă§ăăĺż čŚăăăăžăă ç§ăŤă¨ăŁăŚăăăăťăšăŽççşăĺźă辡ăăĺŻč˝ć§ăŽăăçśćłăŻĺăĺ Ľăăăăžăăă
ăăăăăăăŻăŞăăăăćéă財ăăŽăă¨ăă質ĺăŤăŻçăăžăăă ĺăăă¨ăčĄăĺ é¨APIé˘ć°ăä˝ćăăăŽăéŁăăăŽăŻăŞăă§ăăďź
ăăăăŤăăăăˇă§ăŤă˘ăŚăăŤăăŁăŚçšĺŽăŽĺéĄă解湺ăăăĺ ´ĺăăăŽă˘ăăăźăăç°ĄĺăŤăă1ă¤ăŽĺŻč˝ć§ăŻăĺż čŚăŞć ĺ ąăç°ĄĺăŤć¸Ąăăă¨ăă§ăăăăŠă¤ăăźă/ĺ é¨CLIăłăăłăăä¸ćçăŤĺ Źéăăăă¨ă§ăďźăă¨ăă°ăăˇăŞă˘ăŤĺăăăPythonăŞăă¸ă§ăŻăăŽĺ ´ĺăăăăžăďźă ăăŞăŠďźă
ăăăăăăăŻăŞăăăăćéă財ăăŽăă¨ăă質ĺăŤăŻçăăžăăă ĺăăă¨ăčĄăĺ é¨APIé˘ć°ăä˝ćăăăŽăéŁăăăŽăŻăŞăă§ăăďź
ç°Ąĺă ă¨ćăăŞăăĺ ăŤé˛ăă§ăă ăăă ç§ăŻăăăçŽčăŞăă¨ăŤč¨ăŁăŚăăăŽă§ăŻăăăžăăăăăšăŚăŽĺéĄă解湺ăăăŽă§ăăŠăăăŠăăă
ç°Ąĺă§ăŻăŞăă¨ćăăžăă ăŞăăăăéŁăăăŽăăŤă¤ăăŚăŽć´ĺŻăĺžăăăăŤčłŞĺăăăŚăăžăă ďźćéăçŻç´ă§ăăă¨č¨ăŁăŚăăăŽă§ăăăăŤă¤ăăŚčăăăă¨ăăăă¨ćăăžăăďź
ç§ă俥ăăŚăăpkg_resources
ăŽăăăŞĺ ´ćăŤăăŁăăˇăĽăăăăăăé常ăăľăăăăťăšĺ
ă§ĺĺĽăŽpipă¤ăłăšăăźăŤăĺŽčĄăăĺż
čŚăăăăžăďźç§ăŻăăă§ééăŁăŚăăĺŻč˝ć§ăăăăžăďźă
ăăăŻă pip
ăĺźăłĺşăĺż
čŚăăăă¨ăăćĺłă§ăŻăăăžăăăăCLIăäťăăŚăăźăżăăˇăŞă˘ăŤĺăăAPIăä˝ćăă python -c "from pip._internals import coolapithing; coolapithing(sys.stdin.read())"
ăĺźăłĺşăăŚăstdoutăăăăăŤăăźăżăčŞăżĺăăă¨ăă§ăăžăă ăăŽăăăŞAPIă使ç¨ăăŚăšăżăăŻăŤĺ¤ćăăăă¨ă§ăpipăŽĺźăłĺşăpipsĺźăłĺşăpipsĺźăłĺşăpipsăŽĺ帰ă˝ăŞăĽăźăˇă§ăłăăšăżăăŻăŤĺ¤ćăăăă¨ăă§ăăžăďźăăšăŚăŽĺ帰ăŻăšăżăăŻă¨ăăŚăč¨čż°ă§ăăăăďźăĺşćŹçăŤăŻăăŠă¤ăăźăAPIăä˝ćăăă ăă§ăăăăăŻăăăťăšă¨ăăŚĺźăłĺşăăăžăă
ç§ăŻăžă ăăŽăšăŹăăăčŞăăă¨ăč¨çťăăŚăăžăďźćčżăăăăăŽăăŹăźăăĺ蝢ăăŚăăžăăďźďźăăăă1ă¤ăăŞăŞăźăšăšăąă¸ăĽăźăŤăŻĺŽéăŤăŻăăăžăăăăżăźă˛ăăăŽćĽäťă§ăŻăŞăăćşĺăă§ăăă¨ăăŤăŞăŞăźăšăăžăă ăă¤ăŞăŞăźăšăăăăŽăă¨ăăä¸čŹçăŞčăăćăŁăŚăăăă¨ăăăăžăăăăăăćąşăžăŁăŚăăăăă§ăŻăăăžăăă
ćçľçăŤăŻăPythonăŤăŻăçŠäşăĺśĺžĄä¸č˝ăŤăŞăăŞăăăăŤăăăăăŽć大ăŽĺ帰桹庌ăăăăžăă ăăŽă˘ăăăźăăćĄç¨ăăĺ ´ĺăŻăăăăĺŽčŁ ăăĺż čŚăăăăžăă
ăŻăăăšăżăăŻăăźăšăŽă˘ăăăźăăŤăăăăăŞă桹ăăŞăăă¨ăé常ăŤĺšççăŤăŞăăžăďźăă¨ăă°ăäžĺé˘äżăŤăźă䝼ĺ¤ăŽä˝ăăăăŻăăăŤćˇąăăŞăăžăăăă¨ăă°ăćĺéăăăšăŚăŽăăăąăźă¸ăŤäžĺăăăăă§ăĺéĄăŞăăăŽăä˝ćă§ăăžăďźăčĄăăă¨ăŻăăŤăźăăć¤ĺşăăăă¨ă§ăă
ăŤăźăć¤ĺşăčĄăăăăŽăăŞăç´ ć´ă§ç°ĄĺăŞćšćłăŽ1ă¤ăŻăăšăżăăŻä¸ăŽă˘ă¤ăă ăŽć°ăŤä¸éăč¨ĺŽăăăăŽĺśéăŤéăăĺ ´ĺăŻĺż ăăŤăźăçść ăŤăŞăŁăŚă¨ăŠăźăŤăŞăĺż čŚăăăă¨č¨ăăă¨ă§ăă ăăĄăăăăăŽćŹ çšăŻăăŤăźăăă§ăăă ăćŠăć¤ĺşăăăŞăăă¨ă¨ăăăŤăăŽäžĺé˘äżăă§ăźăłă桹ăăăăąăźă¸ă§ăŻăĺśéăćŠč˝ăăŞăăă¨ă§ăă
ä¸čŹçăŤĺŞăăăŞăăˇă§ăłďźăšăżăăŻăăźăšăŽă˘ăăăźăă使ç¨ăăă¨ăšăżăăŻĺ ¨ä˝ăŤă˘ăŻăťăšă§ăăăăďźăŻăĺăŤăšăżăăŻăăăŠăăźăšăăŚăă¤ăłăšăăźăŤăăăă¨ăăŚăăă˘ă¤ăă ăăă§ăŤăšăżăăŻăŽăŠăăăŤăăăăŠăăă確čŞăăăă¨ă§ăăăŤăźăăçşçăăăăăŤă¨ăŠăźăçşçăăžăăďźăăŽă¨ăŠăźăŻă¨ăłăăŚăźăśăźăŤčĄ¨ç¤şăăăăăćçľçăŤăŞăžăŤăăźăŤăăăŤă˘ăăăăŚĺĽăŽăăźă¸ă§ăłă芌ăĺŻč˝ć§ăăăăžăăăé庌ăŻĺ¤§ĺš ăŤä˝ä¸ăăžăďźă
ăăăŚ@cjerdonekăŽčłŞĺăŤç´ćĽçăăăăăŤďźĺĺă¨ăăŚăăăŻéŁăăăă¨ă§ăŻăăăžăăăăçŠäşăăăŞăăăźăŤăăŚăăăŽăŻă pip
ăçžĺ¨ćŠč˝ăăćšćłă§ăŽăăă¤ăăŽĺăčžźăžăăă˘ăźăăăŻăăŁăŽäťŽĺŽă§ăăăĺă˝ăźăšăć§çŻăăăä¸çă§ăŻăăŻăçĺŽă§ăŻăăăžăăă¤ăłăšăăźăŤç°ĺ˘ă§ç´ćĽĺŽčĄăăăŽă§ăŻăŞăăçŹčŞăŽĺé˘ăăăăăŤăç°ĺ˘ăĺĺžăăžăă
ă¤ăžăă pip
ăŽć˘ĺăŽäžĺé˘äżçŽĄçăă¸ăăŻăăăăăăŽĺ
é¨ă˘ăźăăăŻăăŁăŽĺśéăŤééăăăă¨ăŞăăăžăçžĺ¨ćŠč˝ăăŚăăăłăźăăĺŁăăŞăšăŻăĺăăă¨ăŞăĺĺŠç¨ăăćăç°ĄĺăŞćšćłăŻăăľăăăăťăšă§pipăŽĺĽăŽă¤ăłăšăżăłăšăĺŽčĄăăăă¨ă§ăă äžĺé˘äżăŤăźăăŽć¤ĺşă¨ăă¤ăŤă˘ăŚăăŤĺ¤ąćăăă¨ăăăŤăăĺŽčĄăăŚăăăˇăšăă ăŤăăŠăźăŻçĺźžăćä¸ăăăĺŻč˝ć§ăăăă¨ăăçľćăé¤ăăŚăăăăŻăťă¨ăăŠĺéĄăăăžăăă
ĺ垊/ăšăżăăŻăăźăšăŽă˘ăăăźăăŤĺ¤ćăăăăżăźăłpython -c "from pip._internals import coolapithing; coolapithing(sys.stdin.read())"
ă使ç¨ăăŚĺ
é¨pipé˘ć°ăŤăˇă§ăŤă˘ăŚăăăă¨ăă@dstufftăŽă˘ă¤ăă˘ă弽ăă§ăă ăăăŻăč°čŤăŤĺşăĽăă¨ćăĺç´ă§ăăăĺ
ç˘ă§ăăăăăŤćăăăžăă
ăăăŤĺăăćĺăŽăšăăăăŻăĺç´ăŞĺ帰çă˘ăăăźăăăćĺž
ăăăĺ
Ľĺă¨ĺşĺďźĺ°ăŞăă¨ăăšăąăăďźăĺăăĺä¸ăŽĺ帰çPythoné˘ć°ăŤăžă¨ăăăă¨ă§ăăăăăŽĺžăăăăĺ垊ă˘ăăăźăăŤĺ¤ć/ĺ¤ćă§ăăă¨ćăăžăă ăăăŚăăŻăăăŤăźăăé˛ăăăăŤč¨ŞĺăăĺźăłĺşăăŽset
ăçśćăăăă¨ăă§ăăžăăăăăŻă解湺ăăăŽăç°ĄĺăŞĺ´é˘ăŽ1ă¤ăŽăăă§ăă
ĺ帰çă˘ăăăźăăĺ垊çă˘ăăăźăăŤĺ¤ćăăăă¨ăŤă¤ăăŚăăăĺ°ă調ăšăŚčăăžăăă @xoviatăŽPEP518ďźPRďź4799ďźăŤé˘ăăé¨ĺçăŞä˝ćĽăŻăĺ帰ăŽăă¤ăłăăčŚă¤ăăăŽăŤĺ˝šçŤăĄăžăăďźăăăăăă§ăŤăĺçĽăŽćšăăăăŁăăăă¨ćăăžăďźă ăăăŻĺ˝źăŽăłăźăăłăĄăłăăŤăăăžăďź
# TODO: Use single process with recursion handling
揥ăŤă pip install ...
ăĺźăłĺşăăžăă
ç§ăŽčăă§ăŻăăăăŻăăăă揥ăŽăăăŞĺ¤ć´ăĺ ăăpip install
ďźăăŤăăŽäžĺé˘äżç¨ďźăŽăăŞă˘ăłăăŤăăŁăŚč§Łćąşă§ăăăăăŤčŚăăžăă
ăăŽăăăŤăăŚăăăăăŹăăŤăŽăŤăźăăăăťăšăŻăăăŤăăŽäžĺé˘äżăŽăăŞăźă掾éçăŤçćă§ăăžăă ăžăăčŚă¤ăăŁăčăĺŚçă§ăăžăă čăĺŚçăăăă¨ă䝼ĺăŻčă§ăŻăŞăăŁăăăźăăčăŤăŞăă䝼ä¸ĺć§ăŤçśăăžăă ăăŽĺŽčŁ ă§ăŻăăŠăŽćçšă§ăăăľăăăăťăšă§çşçăăpip-installăŻć大ă§1ă¤ă ăă§ăă
ä¸ă§ććĄăăăăŽă¨ăŽăăăăŞéăăŻăĺż
čŚăŞpipăłăăłă/ăľăăăăťăšĺźăłĺşăăăĺčŁă¤ăłăšăăźăŤăŤĺż
čŚăŞăľăă¤ăłăšăăźăŤĺźăłĺşăăŽăŞăšăăčżă/ĺşĺă§ăăăă¨ă§ăďź pip get-subinstalls
ăžăăŻĺăŤpip subinstalls
ćĺłďźă ä¸č¨ă§ććĄăăăă¨ă¨ăŽĺŻä¸ăŽéăăŻăăăŽăłăăłăăć
ĺ ąăŽĺ ąĺăŤéĺŽăăăăă¨ă§ăă ĺŽéăŤăŻă¤ăłăšăăźăŤăŻčĄăăăžăăă ăăăăŁăŚăăăăĺŽčŁ
ăăăă¨ăŻăăăšăăăăç°Ąĺă§ç°ĄĺăŤăŞăĺŻč˝ć§ăăăăžăă
@cjerdonekăăŽă˘ă¤ăă˘ăŤĺéĄăŻăăăžăăă ăăăăćçľçăŤăŻčŞ°ăăăăăĺŽčŁ ăăĺż čŚăăăďź @pradyunsgăŻäťéąćŤăŤä˝ăăŤĺăçľăă¤ăăă ăŁăă¨ćăăžăăďźďźăăă¤ăăŽăăăŤăăăăŤĺ¤ăăŽĺ°éŁăçşčŚăăăĺŻč˝ć§ăăăăžăă
ä˝ăă辡ăăŁăă äťăŽčŞ°ăăăăăćăŤĺ
ĽăăăăŽăŞăăç§ăŤăŻăăăžăă
ĺéĄă :)
@dstufftăŽă˘ă¤ăă˘ă弽ă
2017ĺš´10ć29ćĽăćĽććĽă08ďź47 xoviată notifications @ github.comăŻćŹĄăŽăăăŤć¸ăăŚăăžăă
@cjerdonekhttps ďź//github.com/cjerdonekĺéĄăŻăăăžăă
ăăŽčăă ăăăăćçľçăŤčŞ°ăăăăăĺŽčŁ ăăĺż čŚăăăăžăďźç§ăŻćă
@pradyunsghttps ďź//github.com/pradyunsgăŻä˝ăăŤĺăçľăă¤ăăă§ăă
äťéąćŤďźďźăăăŚăă¤ăăŽăăăŤăăăăăăŁă¨ĺ¤ăăŽĺ°éŁăçşčŚăăăăăăăăžăăăâ
ăăŞăăč¨ĺăăăăŽă§ăăăŞăăŻăăăĺăĺăŁăŚăăžăăăăŽăĄăźăŤăŤç´ćĽčżäżĄăăGitHubă§čĄ¨ç¤şăăŚăă ăă
https://github.com/pypa/pip/issues/4802#issuecomment-340234567 ăăžăăŻăăĽăźă
ăšăŹăă
https://github.com/notifications/unsubscribe-auth/ADH7SYImpWgJGg-DzQRcO_9hHfE6ZxEAks5sw-5RgaJpZM4QBdSg
ă
ăăăŤćťăŁăŚă@ dstufftăŤăăŁăŚććĄăăăăšăżăăŻ+ĺ é¨ĺźăłĺşăă˘ăăăźăăé˛ăăăă§ăăďź
/ ping @ncoghlan @pfmoore @xavfernandez
ăŻăăăéĄăăăžăă ăăăĺé˛ăăăăăăŤä˝ăă
ăăă10ăŽăŞăŞăźăšăŤé˘éŁăăŚPEP517ă¨PEP518ăŽçŤĺ ´ăčŚç´ă§ăăäşşăŻăăžăăďź ĺ ˇä˝çăŤăŻďź
ç§ăŻăŞăŞăźăšăăăăŤăźăĺž ăŁăŚăăă¨ćăăŚăăžăăăăăăăŽăăă10ăăăăăŻăăăăăŽPEP517 / 518ăľăăźăăŤĺĺăŤčżăĽăăŚăăžăăă ăăăăPEP 518ăŽĺŽčŁ ăŽä¸é¨ăé¤ăăŚăďź4647ăŤĺăçľăă§ăăäşşăŻăăŞăă¨ćăăžăă
䝣ćżăŞăăˇă§ăłăŽ1ă¤ăŻăçžĺ¨ăŽPEP 518ăľăăźăăŽĺśéăćć¸ĺăăăŞăŞăźăšăăăăŤăźăăďź4647ăăăŚăłă°ăŹăźăăăăă¨ă§ăă ăăăĺŽčĄĺŻč˝ăăŠăăăçĽăăăăŽăŚăźăšăąăźăšăŤă¤ăăŚăŻĺĺăŤăăăăžăăă
ç§ăŻăăŽč°čŤăčŚăă°ăăă§ă-ăăŠăźăŻçĺźžă¨ăăŚćŠč˝ăăăĄăŞä¸éĺ獯ăŞĺćĺŽčŁ ăŤă¤ăăŚă芍ăłăăžăăăăăŚăăăç解ăăăăčŻăă˘ă¤ăă˘ăčăĺşăăăăŤćéăĺ˛ăăŚăăăçăăăŤćčŹăăžăă
FWIWăăăŤăčŚäťśăŽăăăŤăă¤ăźăŤăă¤ăłăšăăźăŤăăăăăŤĺśéăăăă¨ăŻăćĺăŽăăźă¸ă§ăłă§ăŻč¨ąĺŽšă§ăă匼ĺćĄă ă¨ćăăžăă
ăăăŻăžăăăăŞăăăăăčŞä˝ăŽăăŤăčŚäťśăŤăŞăăŞăăăăŤăăăăăĺéĄă俎ćŁăăĺż čŚăăăăă¨ăç§ăŤćăĺşăăăžăă
ăăŠăźăŻçĺźžă¨ăăŚćŠč˝ăăăĄăŞä¸éĺ獯ăŞĺćĺŽčŁ ăŤă¤ăăŚă芍ăłăăžăă
čŹç˝ŞăŻĺż čŚăăăžăăă ç§ăč¨ăŁăăăăŤăăăŞăăŻćĺăŽčŠŚăżă§ăăăăŽĺéĄăäşć¸Źăăăă¨ăŻă§ăăžăăă ç§ăăĄăäťçĽăŁăŚăăăă¨ăçĽăŁăŚăăŚăăPRăé ăăăăă¨ăŻăăăăăŽč°čŤăĺťśćăăă§ăăăă
ăăšăżăźăŻçžĺ¨ăŞăŞăźăšĺŻč˝ăŞçść ă§ăăďź
IIUCăăăăŻäťăŽă¨ăăăˇăšăă ăăăŠăźăŻçćăăăă¨ăă§ăăžăă ăăăŻćŁăăă§ăăďź ăăăăăŞăăăăă§ăŻăŞăă¨ćăăžăă
PEP517ăăăł/ăžăăŻPEP518ăŽĺŽčŁ ăăĺŠç¨ĺŻč˝ăŤăŞăăžă§pip 10ăé ăăăăŽăĺççăŞăżă¤ă ăšăąăźăŤă§ćŠč˝ăăĺŻč˝ć§ăŻăăăžăăďź
ç°ĄĺăŞďźçćçăŞďźč§ŁćąşçăŻăăăŤăăŽäžĺé˘äżăăă¤ăźăŤăŤĺśéăăăă¨ă ă¨ćăăžăă ćĽéąăŽăă¤ăăăăçŞăĺşăăă¨ăăžăă ăăăĺŽçžăăŞăĺ ´ĺăŻăçžĺ¨ăŽPEP 518ăľăăźăăăăšăżăźăăĺé¤ăăăăăă10.0.0ăĺé¤ăăă°ĺéĄăăăžăăă
PEP 518ăŽĺŽčŁ ăŽä¸é¨ăé¤ăăŚăďź4647ăŤĺăçľăă§ăăäşşăŻăăŞăă¨ćăăžăă
ă¤ăžăăă˝ăźăšăăŤăăŽäžĺé˘äżă訹ĺŻăăPEP 518ăŽĺŽĺ ¨ăŞĺŽčŁ ă§ăăďź
ăăăăăăŚďź4647ăŤă¤ăăŚ-ä¸č¨ăŽ@xoviatăŽčŞŹćăŤăăă¨ăăłăźăăŽĺ¤ć´/秝ĺă¨ăŞăă¸ă§ăŻăďźĺ
ˇä˝çăŤBuildEnvironment
ďźăŽćć樊/ĺŻčŚć§ăĺż
čŚăŤăŞă俎ćŁăŻç°Ąĺă§ăŻăăăžăăă
ăă¤ăźăŤăŤĺśéăăăŽăŻăăăŽčĄăĺ¤ć´ăăăŽă¨ĺăăăăç°ĄĺăŞăŻăă ă¨ćăăžăă
ăŤďź
finder.format_control = FormatControl(set(), set([':all:']))
2çŞçŽăŽăăŁăźăŤăăŤăŻăăă¤ăăŞă¨ăăŚăŽăżć¤ç´˘ăăăăăąăźă¸ăŽăťăăăăăăžăă ':all:'
ăŽçšćŽăŞăąăźăšăŻăăăšăŚăŽăăăąăźă¸ăćĺłăăžăă
ăŻăă ăăăăăăă ăă§ăŻďź4647ăŤĺŻžĺżă§ăăžăăă ăžăăăăŽăłăźăăŻăŠăăčĄăăžăă
ăŞăžăŤăăäťăăŚă
2017ĺš´12ć2ćĽĺććĽ01:23ăŤ[email protected]ăŻćŹĄăŽăăăŤć¸ăăŚăăžăă
ăă¤ăźăŤăŤéĺŽăăăŽăŻăăăăĺ¤ć´ăăăŽă¨ĺăăăăç°ĄĺăŞăŻăă ă¨ćăăžă
ăŠă¤ăłďźăŤďź
finder.format_control = FormatControlďźsetďźďźăsetďź['ďźallďź']ďźďź
2çŞçŽăŽăăŁăźăŤăăŤăŻăăă¤ăăŞă¨ăăŚăŽăżć¤ç´˘ăăăăăąăźă¸ăŽăťăăăăăăžăă
'ďźallďź'ăŽçšćŽăŞăąăźăšăŻăăăšăŚăŽăăăąăźă¸ăćĺłăăžăăâ
ăăŞăăč¨ĺăăăăŽă§ăăăŞăăŻăăăĺăĺăŁăŚăăžăăăăŽăĄăźăŤăŤç´ćĽčżäżĄăăGitHubă§čĄ¨ç¤şăăŚăă ăă
https://github.com/pypa/pip/issues/4802#issuecomment-348598368 ăăžăăŻăăĽăźă
ăšăŹăă
https://github.com/notifications/unsubscribe-auth/ADH7SUi0QMS3rr5Iba90XWZmFweGmqeBks5s8FlEgaJpZM4QBdSg
ă
ăăă§ăăäťăŤăăăăăăŽĺéĄăăăăžăă ăăăăăăăŻăăăăăŠăźăŻçćăé˛ăăŻăă§ăăăăăŻç§ăćă塎ă迍ăŁăć¸ĺżľă§ăăă¨ćăăžăă
誰ăăç§ăŽĺ
ăŽPRăĺźăçśăăă¨ăćăĺ ´ĺďźăPEP518ăŽĺéĄă俎ćŁăăăďźă
ăăŤăăŽĺé˘ăčĄăăăŞăăăăŤĺ¤ć´ăăăŽăŻéŁăăăă¨ă§ăŻăăăžăă
pyproject.tomlăŞăă§ćĺšăŤăŞăăžăă ăăźă¸ăăăŞăăŁăĺ
ăŽççą
ă˝ăźăšăăäžĺé˘äżăă¤ăłăšăăźăŤăăăăăŽăľăăźăăĺé¤ăăăă¨ă§ăă
PEP518ăăăăăäťă§ăŻäşşă
ăŻPEP518ă
ăăă10ăŤăžăŁăăĺ
ĽăŁăŚăăŞăăŽă§ă彟ăăŻăăŽPRăĺăĺ
ĽăăăŽăŤăăéŠăăŚăăăăăăăžăăă ç§
ĺäşşçăŤăăăćčˇăăćéăŻăăăžăăăăăăăŻäťăŽäşşăć˘ăăăšăă§ăŻăăăžăă
ăťăăŽć°čĄăŽĺ¤ć´ăĺż
čŚăŤăŞăăŽă§ăăăăĺé˛ăăăăă¨ăă
ďźPEP 518ăăšăăŽxfailingăŻĺĽă¨ăăŚďźă
ĺŽéăç§ăŽăăčŻăĺ¤ćăŤĺăăŚăpipéçşč ăç§ăŽćĄäťśăŤĺćăăĺ ´ĺăŻăăăăŤPEP517ă¨518ăŽä¸ĄćšăĺŽčŁ ăăă¤ăăă§ăă
1ăŤĺéĄăŻăăăžăăă ç§ăŻăŠăĄăăŽćšćłă§ă2ă弽ăżăžăăă
2017ĺš´12ć3ćĽ02:36ăŤă xoviatnotifications @ github.comăŻćŹĄăŽăăăŤć¸ăăŚăăžăă
ĺŽéăç§ăŽăăčŻăĺ¤ćăŤĺăăŚăç§ăŻä¸ĄćšăŽPEPăĺŽčŁ ăăç¨ćăăăăžă
ăăăéçşč ăç§ăŽćĄäťśăŤĺćăăĺ ´ĺăŻăăžăăŞă517ă¨518ďź
- äžĺé˘äżăŻćĺăŻăă¤ăźăŤăăăŽăżăŤăŞăăžă
- pipăŤăŻăćĺăŻĺ é¨ăăŤăăăăŻă¨ăłăăăăăžăăă
ćçľçăŤĺé¤ăăăžăâ
ăăŞăăč¨ĺăăăăŽă§ăăăŞăăŻăăăĺăĺăŁăŚăăžăăăăŽăĄăźăŤăŤç´ćĽčżäżĄăăGitHubă§čĄ¨ç¤şăăŚăă ăă
https://github.com/pypa/pip/issues/4802#issuecomment-348720096 ăăžăăŻăăĽăźă
ăšăŹăă
https://github.com/notifications/unsubscribe-auth/ADH7ST6riptZkYMap5Z5SstRf-VmE7eAks5s8bu5gaJpZM4QBdSg
ă
ĺčăžă§ăŤăćĄäťśăŻäťťćă§ăŻăăăžăăăăćĺăŽĺŽčŁ ăĺŻč˝ăŤăăăăăŤăăăžăă @pfmooreăŻăăă§ĺ¤§ä¸ĺ¤Ťă§ăăďź
ç§ăŻăăç§ăŽăăčŻăĺ¤ćăŤĺăăŚ...ç§ăŽćĄäťśăŤĺćăăăă¨ăăçłăĺşăŽĺŁčŞżăŤçšăŤćşčśłăăŚăăžăăă äťăŽpipéçşč ăăăŽććĄăĺăă§ĺăĺ ĽăăŚăăç§ăŻç°č°ăĺąăăă¤ăăăŻăăăžăăăăĺäşşçăŤăŻăĺŽčŁ ăŽčŠłç´°ăŤé˘ăăč°čŤĺ ¨ä˝ăĺéăăćéăŻăăăžăăă ĺşćŹçăŤăăăăŤă¤ăăŚăŻ@dstufftă¨@xavfernandezăŤäťťăăžăďź @pradyunsgăŻăă§ăŤĺ˝źăŽčŚč§Łă示ăăŚăăžăďźă
ććĄăŽăăźăłăŻăćĺăŽĺŽčŁ ăăŠăŽăăăŤăŞăăăŤă¤ăăŚăŽć šćŹçăŞä¸ä¸č´ăŽăăăŤĺŽčŁ ăŽćšćłăééăăăăăă§ăă ĺĽăŽĺŽčŁ ăŽč°čŤăŤç§ťăăăăăäťăŻĺĺăŤĺćăăăă¨ćăăžăă
ç§ăéłč˛ăŤăăžăćşčśłăăŚăăŞăă¨ă ăč¨ăăžăăăăăŻ
ăă ăăŞăăăŽăăźăłă使ăăăăŽăă誏ćăăćéăă¨ăăŤăŽăźăăăăžăă
ăŞăŠăç§ăŽçľăăăăăŽç°Ąć˝ăŞčżäżĄăŽĺăççąă
ăăśăăžăčż°ăšă䞥ĺ¤ăăăăžăăç§ăŻăă¤ăăŞăŽăżăŽăăŤăäžĺé˘äżă§ăŻăźăŤă§ă
éˇćçă§ăŻăŞăăćĺăŽĺŽčŁ
ă ăăăŻéŠç¨ăăăžăă
ĺŽčĄćăŽäžĺé˘äżďźăăăŻĺĽăŽĺ ´ćă§ăä˝ăăăŽĺ˝˘ă§çşçăăŚăăăăďź
č¨čŤďźă
2017ĺš´12ć3ćĽăćĽććĽă23ďź37 xoviată notifications @ github.comăŻćŹĄăŽăăăŤć¸ăăŚăăžăă
ăŞăăĄăźăŽăăźăłăŻă
ä˝ăŤă¤ăăŚăŽć šćŹçăŞćčŚăŽä¸ä¸č´ăŤăăăĺŽčŁ ăŻééăăăžăă
ćĺăŽĺŽčŁ ăŻćŹĄăŽăăăŤăŞăăžăă ç§ăŻăăăĺćăăă
ĺĺăŻäťă§ăŻĺĽăŽĺŽčŁ ăŽč°čŤăŤç§ťăăžăăâ
ăăŞăăč¨ĺăăăăŽă§ăăăŞăăŻăăăĺăĺăŁăŚăăžăăăăŽăĄăźăŤăŤç´ćĽčżäżĄăăGitHubă§čĄ¨ç¤şăăŚăă ăă
https://github.com/pypa/pip/issues/4802#issuecomment-348802032 ăăžăăŻăăĽăźă
ăšăŹăă
https://github.com/notifications/unsubscribe-auth/ADH7ScUh-BveonoTxZ5FkkeSynFvoLb8ks5s8uNRgaJpZM4QBdSg
ă
ćŁç´ăŞă¨ăăăăăăăŽćŠč˝ăpip 10ăŤĺŤăăăă¨ă¨ăŻé˘äżăăŞăăăăć稿ăŽăăźăłăŤă¤ăăŚăăăŤč°čŤăăăŽăŻăăăăă誰ăăŽćéăćĺšăŤć´ťç¨ăăăă¨ă§ăŻăăăžăăăăă ăăç§ăŽćĄäťśăăŠăĄăăŽ@pfmooreăăăăăźă¸ă§ăăăă¨ăäżč¨źăăĺż čŚăăăăžăďźčŞ°ăăăŽăăăŞäżč¨źăăăăă¨ăă§ăăŞăăă¨ă示ăăžăăăăăăŻăăăă§ăŽćéăŤĺŻžăăŚčŞ°ăćŻćăăăŞăăă¨ăčăăă¨č¨ąĺŽšă§ăăžăďźă @ dstufft ăăžăăŻ@xavfernandeză
çš°ăčżăăžăăăćĄäťśăŻç§ăŽĺäşşçăŞćčŚă§ăŻăăăžăăăăĺŽčŁ 丝ĺ°ĺă§ăă ăăăăŽćĄäťśă硊ĺăăă¨ăĺŽčŁ ăç´ćă§ăăŞăăŽă§ăPRăŽćşĺăŤćéă貝ăăăŚă塎ĺăčŞăă§ăăăăăŞăăăŽčĄăăăăŤăăăŽăăă¨ĺ°ăăäşşăŻćĺłăăăăžăăă ăăăŚăăăăăăăŻăăźă¸ă§ăăŞăăŽă§ăăďźă PRăŽçŽçăćŁç˘şăŤä˝ă§ăăăăŤă¤ăăŚčŞ¤č§ŁăăăŁăăăă§ăă
ăăźăłăŤĺćăăžăăă ç§ăŽăă¤ăłăăŻăĺ¤ć´ăăăźă¸ăăŞăă¨ăăăă¨ă§ă[1]ăăăăăŁăŚăăăă§ăŻç§ăŽčŚč§ŁăŻăăăťăŠéčŚă§ăŻăăăžăăă
[1]ćăăăŤăĺŽčŁ ăčŚăăă¨ăăŞăăŽă§ăç§ăŽççąăăłăźăăŽĺ質ăŤé˘ăăć¸ĺżľă¨ăŻé˘äżăăŞăăă¨ăŻćăăă ă¨ćăăžăăăăăŻăăłăźăăĺĺăŤç解ăăăăăŽćéăăŞăăă¨ă§ăăĺşćŹçăŤăăăźă¸ăăăă¨ăăă¨ăăŞăă
@xoviatä¸č¨ă§čŞŹćăăĺ垊çă˘ăăăźăă¨ĺ帰çă˘ăăăźăăŤé˘ăăĺŽčŁ č¨çťăŻä˝ă§ăăďź
ăžăăć確ăŤăăăăăŤăćĺăŤăăźă¸ĺŻč˝ăŞPEP 517ăăăł518ăŽé¨ĺçăŞĺŽčŁ ăĺŽäşăă揥ăŤăăźă¸ĺŻč˝ăŞĺŽĺ ¨ăŞĺŽčŁ ăĺŽäşăăă¨č¨ăŁăŚăăžăăďź ăăă¨ăăé¨ĺçăŞĺŽčŁ ăŽăżăčĄăă¨č¨ăŁăŚăăăŽă§ăăăăăă¨ăăĺż ăăăăăźă¸ĺŻč˝ă§ăŻăŞăĺćăŽćŽľéăçľăŚĺŽĺ ¨ăŞĺŽčŁ ăčĄăă¨č¨ăŁăŚăăăŽă§ăăďź ďźç§ăŻé¨ĺçăŤăăăŞăăŽăłăĄăłăă§ăćĺăŤăăăăŚăćçľçăŤăăăŞăăä˝ăćĺłăăăŽăăăăăăç解ăăăă¨ăăŚăăžăăďź
ćĺăŽćĄäťśăŻăĺ帰ăŽĺéĄĺ ¨ä˝ăćé¤ăăžăă
ăžăăć確ăŤăăăăăŤăćĺăŤăăźă¸ĺŻč˝ăŞPEP 517ăăăł518ăŽé¨ĺçăŞĺŽčŁ ăĺŽäşăă揥ăŤăăźă¸ĺŻč˝ăŞĺŽĺ ¨ăŞĺŽčŁ ăĺŽäşăăă¨č¨ăŁăŚăăžăăďź
ç§ăč¨ăŁăŚăăăŽăŻăé¨ĺçăŞĺŽčŁ ăĺŽäşăăăă¨ă§ăăăăăŻăăŚăźăšăąăźăšăŽ95ďź ă§ćŠč˝ăăžăă çšăŤăäžĺé˘äżăŤčťčźŞăăăďźçžĺ¨é常ăŤä¸čŹçďźămanylinux / windows / OSXăăŠăăăăŠăźă ďźĺ¤§ĺ¤ć°ăŽăŚăźăśăźďźă使ç¨ăăŚăăĺ ´ĺă
ĺŽĺ ¨ăŞĺŽčŁ ă§ăŻăăăžăăă ăăăăăăźă¸ä¸ĺŻč˝ăŞPRăĺĺžăăćšćłăŻăć¨ćşăŤćşć ăăăăŠăăăŤăăăăăăăăŞăźăŤăŞă˘ăăăˇăłă°ăă˘ăăăźăăĺŽčĄăăăă¨ăăăă¨ă§ăă
ĺŽĺ ¨ăŞĺŽčŁ ă§ăŻăăăăăăĺĺĽăŽPRăĺż čŚă¨ăăăăŞăĺäťăŞĺéĄăă˝ăźăăăĺż čŚăăăăă¨ăŤćł¨ćăăŚăă ăăďź100䝼ä¸ăŽăłăĄăłăăĺŤăPRăăăă¨ăé常ăăłăźăăĺĺăŤăŹăăĽăźăăăŚăăŞăăă¨ăćĺłăăžăďźă [1]
[1] https://github.com/btc1/bitcoin/pull/11#issuecomment -313843216
ăăŽĺéĄăäťăăăŻăăźăşăăžă-ăăŤăăŽäžĺé˘äżă¨ăăŚăă¤ăźăŤăŽăżăăľăăźăăăpip10ăŽPEP518ăŽäşĺăľăăźăăăăăžăă ĺŽĺ ¨ăŞăľăăźăăŤă¤ăăŚč°čŤăăăăăŽć°ăăĺéĄă¨ăPEP 517ăľăăźăăŤă¤ăăŚăŽĺĽăŽĺéĄăéăăžăďźé˘éŁăăăăŽă¨ăăŚăăăăĺźç¨ăăžăďźă
@ncoghlan @rgommers @cjerdonekăŤć´ĺŻăä¸ăăŚăăăŚăăăă§ĺŠăăŚăăăŚăăăă¨ăă PEP518ăŽćĺăŽĺŽčŁ ăăăŚăăă@takluyverăŤćčŹăăžăăăăăăŽĺ¤ć´ăŽĺŽčŁ ăŤĺĺăăŚăăă@ghost ďźăŤćčŹăăžăă çžĺ¨ăŽăľăăźăăŽćšĺăŤăĺĺăăă ăăăăăă¨ăăăăăžăă
PSďź100çŞçŽăŽăłăĄăłăďź ďźtadaďź
ăăŽăšăŹăăăŻăéăăăăĺžăćčżăŽă˘ăŻăăŁăăăŁăăŞăăăăčŞĺçăŤăăăŻăăăŚăăžăă é˘éŁăăăă°ăŤă¤ăăŚăŻăć°ăăĺéĄăéăăŚăă ăăă
ćăĺčăŤăŞăăłăĄăłă
ç§ă俥ăăŚăă
pkg_resources
ăŽăăăŞĺ ´ćăŤăăŁăăˇăĽăăăăăăé常ăăľăăăăťăšĺ ă§ĺĺĽăŽpipă¤ăłăšăăźăŤăĺŽčĄăăĺż čŚăăăăžăďźç§ăŻăăă§ééăŁăŚăăĺŻč˝ć§ăăăăžăďźăăăăŻă
pip
ăĺźăłĺşăĺż čŚăăăă¨ăăćĺłă§ăŻăăăžăăăăCLIăäťăăŚăăźăżăăˇăŞă˘ăŤĺăăAPIăä˝ćăăpython -c "from pip._internals import coolapithing; coolapithing(sys.stdin.read())"
ăĺźăłĺşăăŚăstdoutăăăăăŤăăźăżăčŞăżĺăăă¨ăă§ăăžăă ăăŽăăăŞAPIă使ç¨ăăŚăšăżăăŻăŤĺ¤ćăăăă¨ă§ăpipăŽĺźăłĺşăpipsĺźăłĺşăpipsĺźăłĺşăpipsăŽĺ帰ă˝ăŞăĽăźăˇă§ăłăăšăżăăŻăŤĺ¤ćăăăă¨ăă§ăăžăďźăăšăŚăŽĺ帰ăŻăšăżăăŻă¨ăăŚăč¨čż°ă§ăăăăďźăĺşćŹçăŤăŻăăŠă¤ăăźăAPIăä˝ćăăă ăă§ăăăăăŻăăăťăšă¨ăăŚĺźăłĺşăăăžăăç§ăŻăžă ăăŽăšăŹăăăčŞăăă¨ăč¨çťăăŚăăžăďźćčżăăăăăŽăăŹăźăăĺ蝢ăăŚăăžăăďźďźăăăă1ă¤ăăŞăŞăźăšăšăąă¸ăĽăźăŤăŻĺŽéăŤăŻăăăžăăăăżăźă˛ăăăŽćĽäťă§ăŻăŞăăćşĺăă§ăăă¨ăăŤăŞăŞăźăšăăžăă ăă¤ăŞăŞăźăšăăăăŽăă¨ăăä¸čŹçăŞčăăćăŁăŚăăăă¨ăăăăžăăăăăăćąşăžăŁăŚăăăăă§ăŻăăăžăăă