Pip: PEP 518을 향하여

에 만든 2017년 10월 21음  Â·  101윔멘튞  Â·  출처: pypa/pip

나는 읎번 죌말에 AWOL읎지만 ë‚Žê°€ 읎핎하는 한 PEP 518곌 pip로 구현하는 것에 대한 녌의가 필요합니닀.

토론읎 얎디에서 음얎나고 있는지 찟을 수 없었Ʞ 때묞에 읎 묞제륌 엎었습니닀. 또한 pypa-dev/distutils-sig가 아닌 한 장소에 있는 것읎 좋습니까?

auto-locked maintenance

가장 유용한 댓Ꞁ

pkg_resources 와 같은 위치의 캐시 때묞에 음반적윌로 하위 프로섞슀 낎부에서 별도의 pip 섀치가 필요합니닀(틀멮 수 있음).

귞렇닀고 pip 륌 혞출핎알 하는 것은 아니지만 CLI륌 통핎 데읎터륌 직렬화하는 API륌 만듀고 python -c "from pip._internals import coolapithing; coolapithing(sys.stdin.read())" 륌 혞출하고 stdout에서 더 많은 데읎터륌 읜을 수 있습니닀. 읎러한 API륌 사용하여 슀택윌로 변환하여 pip 혞출 pip 혞출 pip 혞출 pip 혞출의 재귀 솔룚션을 전환하는 것읎 가능합니닀(몚든 재귀는 슀택윌로도 섀명될 수 있Ʞ 때묞에), Ʞ볞적윌로 비공개 API륌 만드는 것입니닀. 프로섞슀로 혞출됩니닀.

나는 여전히 읎 슀레드륌 읜을 계획입니닀(최귌에 많은 판읎 회전했습니닀!). 귞러나 한 가지 더 쀑요한 점은: 우늬는 싀제로 출시 음정읎 없윌며 ì–Žë–€ 목표 날짜가 아닌 쀀비가 되멎 출시합니닀. 우늬는 때때로 우늬가 ì–žì œ 출시하고 싶은지에 대한 음반적읞 아읎디얎륌 가지고 있지만 귞것읎 확정된 것은 아닙니닀.

몚든 101 댓Ꞁ

4799는 많은 녌쟁읎 음얎나는 곳입니닀. 귞것은 죌로 닀음곌 같은 읎유로 쎉발되었습니닀.

  1. PEP 518 지원에 대한 유음한 ë›°ì–Žë‚œ 찚닚Ʞ는 #4764(https://github.com/pypa/pip/pull/4144#issuecomment-302711736을 통핎)임을 읎핎했습니닀.
  2. 귞런 닀음 #4799가 나타났고 @xoviat 읎 하고 있는 몚든 진행 쀑읞 작업을 읎핎할 수 있는지 확읞하Ʞ 위핎 삎펎볎았습니닀.
  3. ê·ž 곌정에서 #4647읎 PEP 518 지원읎 쀑닚되었닀는 늎늬슀 ì°šë‹šêž°ë¡œ 나타났습니닀.

@xoviat 읎 #4799에서 말한 낎용을 알아낎렀고 하는 동안 빌드 환겜의 재귀 빌드와 ꎀ렚된 몇 가지 묞제가 있음읎 분명핎졌습니닀(X는 빌드에 Y가 필요하고 Y에는 Z가 필요합니닀...). 읎것읎 구현 버귞읞지, 더 깊은 디자읞 묞제읞지, 너묎 많은 묞제 없읎 ì—°êž°í•  수 있는 불쟌한 윔너 쌀읎슀읞지에 대핎서는 여전히 불분명합니닀.

개읞적윌로 나는 낮 깊읎에서 ë²—ì–Žë‚œ 지점에 있습니닀. @xoviat 의 구현읎 필요한지 판닚하Ʞ 위한 것읞지, 아니멎 #4764륌 병합하고 바로 사용할 수 있도록 #4647을 수정하Ʞ만 하멎 되는지 읎핎할 수 없습니닀. 또한 #4647을 수정하는 것읎 얌마나 쉬욎지 나도 몚늅니닀( @xoviat 는 #4647을 수정하Ʞ 위핎 #4799륌 병합핎알 한닀고 말하는 것 같지만 자첎 묞제가 있습니닀).

읎번 죌말에 더 읎상 녌의륌 읎얎갈 시간곌 에너지가 부족하여 읎 시점에서 (적얎도 잠시 동안은) 귞만 두겠습니닀. 저에게 핵심은 pip 10에 대핮 수용 가능한 수쀀의 PEP 518 지원을 원한닀는 것입니닀. 누군가가 우늬가 거의 ë‹€ 왔는지, 아니멎 몇 죌 낚았는지에 대한 느낌을 죌얎서 ë‚Žê°€ 사람듀읎 pip 10읎 올 때까지 새핎가 될 때까지 였지 않을 것읎띌고 핎고시킀는 것을 플할 수 있습니닀 ...

맀우 유용한 요앜 @pfmoore에 감사드늜니닀.

@ncoghlan @dstufft @xoviat 여Ʞ에 토론을 가젞도 될까요? 비공개 PR에서 하는 것은 저에게 읎상하게 느껎집니닀. ._.

확싀한 것.

@pradyunsg 귞럎 시간읎 없닀는 걞 압니닀. 귞러나 당신은 나볎닀 PR 승읞을 받는 데 더 성공적읎었습니닀. 따띌서 원하신닀멎 현재 구현, 작동 방식 및 잠재적 묞제에 대핮 Ʞ꺌읎 안낎핎 드늬겠습니닀. 나는 읎 묞제듀 쀑 음부(전부는 아님)륌 얎떻게 핎결했는지 귞늬고 완전한 수정에 대한 낮 아읎디얎륌 섀명할 것입니닀. 나는 귞것읎 끝난 한 ê·ž 음을 누가 하든 솔직히 상ꎀ하지 않는닀.

사싀, 당신은 AWOL입니닀. 귞래서 요앜을 작성하겠습니닀.

pip 에는 대부분의 Python 프로젝튞에서 흔히 볌 수 있는 것처럌 개첎 계잵읎 있습니닀. 귞것은 몚두 명령을 시작하여 개첎에 대한 새 찞조륌 만듀고 하위 개첎에 대한 새 찞조륌 만듭니닀. 귞것은 나묎와 같습니닀.

객첎의 "범위"륌 음종의 수명윌로 정의하겠습니닀. 개첎가 졎재하는 Ʞ간입니닀. 현재 pip 에 있는 PEP 518의 범위는 WheelBuilder 입니닀. PEP 518 환겜은 bdist_wheel 에 대핮 섀정되고 bdist_wheel 는 핎당 환겜 낎에서 싀행되고 환겜은 핎첎됩니닀.

귞게 뭐가 묞제알? 묞제는 PEP 518 환겜의 범위가 setup.py 에 대한 몚든 혞출의 범위와 같거나 컀알 한닀는 것입니닀. 더 구첎적윌로 말하멎 setup.py 혞출 êž°ê°„ 동안 졎재하는 개첎륌 캡슐화핎알 합니닀. ê·ž 개첎는 Requirement 입니닀.

첫 번짞 명백한 결정은 BuildEnvironment 에 대한 ì°žì¡°ê°€ 있얎알 하고 Requirement 는 묎엇읎든 좋은 장소입니닀. 싀제로 Requirement 가 졎재하는 겜우에만 setup.py 가 혞출되Ʞ 때묞에 찞조륌 두는 것읎 IMHO가 가장 좋은 위치입니닀.

닀음 묞제는 BuildEnvironment 요구 사항을 섀치하는 방법입니닀. 우늬는 pip 로 쉘 아웃할 수 있습니닀. 귞늬고 귞것은 원래 구현자가 낮며 결정입니닀. 귞러나 여Ʞ에는 묞제가 있습니닀. pip 는 각 pip 가 자신을 닀시 혞출할 수 있Ʞ 때묞에 얌마나 많은 쉘 혞출을 하는지 알 수 없습니닀. 싀제로 pip 가 너묎 많은 프로섞슀륌 생성하멎 순환 종속성을 포핚하는 악의적윌로 구성된 팚킀지가 누군가의 컎퓚터에 충돌을 음윌킬 수 있습니닀.

또 닀륞 묞제는 우늬가 ì–Žë–€ 쉘 혞출을 í•Žì•Œ 하는지입니닀. 명령쀄 맀개변수륌 가젞였는 것읎 솔직히 말핎서 핎당 혞출을 í•Žì•Œ 하는 PITA읎Ʞ 때묞에 싀제로는 생각볎닀 까닀롭습니닀. 따띌서 사용자가 자식에게 전달한 원래 맀개변수륌 전달하는 데 묞제가 있을 수 있습니닀. 원래 구현자가 사용한 솔룚션은 finder 을 사용하는 것곌 ꎀ렚읎 있지만 ê·ž 묞제륌 알고 있닀고 생각합니닀.

사용자가 ctrl+C륌 누륌 때 얎늰읎륌 죜음 수 있는 음종의 ꎀ늬자 큎래슀 없읎 자신의 자식을 제거하는 것은 잘못된 것읎 아니띌 악의적입니닀. 특히 생성한 프로섞슀의 수륌 몚륎는 겜우에는 더욱 귞렇습니닀. 나는 개읞적윌로 아읎듀읎 현재 구현에서 죜는지 여부륌 몚륎지만(읎것은 FUD음 수 있음), 귞렇지 않닀멎 현재 구현 IMHO가 잘못된 것입니닀(닀륞 묞제 제왞).

핎당 묞제에 대한 몇 가지 가능한 솔룚션은 닀음곌 같습니닀.

  1. PEP 518을 밖윌로 낎볎낎고 싶닀멎 가장 좋은 방법은 아마도 최대 10개 정도의 잠ꞈ만 허용하는 음종의 잠ꞈ 파음음 것입니닀. 귞런 닀음 명령쀄 읞수와 핚께 정확한 요구 사항을 자식에게 전달할 수 있습니닀.

  2. PEP 517 읎후에 구현하고 싶은 적절한 솔룚션은 install 명령에서 직접 쎈Ʞ화되는 BuildEnvironmentManager 큎래슀륌 갖는 것입니닀. BuildEnvironmentManager 는 거Ʞ에 있는 몚든 객첎( RequirementPreparer , WheelBuilder 등)에 대한 찞조륌 가지며 get_build_environment(requirement_set) 닚음 메서드륌 갖습니닀. 귞런 닀음 set_build_environment_manager 와 같은 $ RequirementPreparer 메서드륌 구현하여 빌드 환겜을 얻을 수 있습니닀. BuildEnvironmentManager 는 동음한 환겜(가장 음반적윌로 ['setuptools', 'wheel'] )을 여러 번 사용하는 것을 감지하고 여러 번 필요한 겜우 동음한 환겜을 제공하여 생성할 필요가 없도록 할 수 있습니닀(쎈Ʞ에는 맀우 음반적입니닀 . pyproject.toml 가 없는 프로젝튞 포핚). 읎상적윌로는 순환 ì°žì¡°(사소하지 않음)륌 제거하렀고 시도하는 음부 OOP 디자읞도 있을 것입니닀.

@xoviat --no-binary :all: 읞 악의의 겜우는 닀룚지 않을 수 있지만 완료된 빌드뿐만 아니띌 -progress 것, 빌드 종속성 죌Ʞ가 종료되도록 하는 것윌로 충분합니까? 읎것은 첫 번짞 제안(동시 pip 혞출 수에 대한 프로섞슀 간 제한)의 변형읎지만 닀음곌 같읎 닀시 작성됩니닀.

  1. 한 시슀템의 한 프로섞슀만 동시에 동음한 팚킀지륌 빌드할 수 있습니닀.
  2. pip가 생성하는 몚든 하위 빌드로 전달하는 최상위 "빌드 ID"가 있습니닀(예: 빌드 쀑읞 팚킀지의 읎늄곌 결합된 최상위 프로섞슀의 PID).
  3. 빌드 캐시가 닀륞 빌드 ID로 빌드 쀑임을 나타낮는 겜우 핎당 빌드가 완료될 때까지 Ʞ닀늜니닀.
  4. 빌드 캐시가 동음한 빌드 ID에 대핮 읎믞 빌드 쀑임을 나타낮는 겜우 순환 종속성을 볎고하고 빌드가 작동하렀멎 --binary <name> 가 필요핚을 나타낮는 였류로 구제합니닀.

pip 는 setuptools 와 wheel 읎 몚두 필요한 Ʞ볞 녌늬에서 setuptools & wheel 륌 제왞하는 @pfmoore 제안을 구현핎알 합니닀. wheel 륌 빌드 종속성윌로 사용하지 않윌멎 암시적 빌드 종속성 죌입읎 볞질적윌로 순환 종속성 감지 녌늬륌 튞늬거합니닀.

디슀크륌 사용하여 OOP 섀계 묞제륌 파악하지 않아도 되는 것은 나쁜 생각읎 아닙니닀. 읎는 PEP 518을 완전히 올바륎게 구현하는 것곌 묎얞가륌 핚께 핎킹하는 것 사읎의 쀑간 옵션곌 같습니닀.

또한 욎영 첎제 수쀀 도구륌 사용하여 서로 닀륞 Python 수쀀 빌드륌 서로 격늬할 수 있윌므로 컚테읎너화된 환겜 및 chroot와 원활하게 상혞 작용할 수 있윌므로 pip는 자첎 하위 프로섞슀륌 볎장하는 방법을 파악하멎 됩니닀. 서로 협력합니닀.

@xoviat 위의 요앜에 감사드늜니닀. ë‚Žê°€ 말했듯읎, 나는 읎 분알의 윔드에 대한 나의 읎핎의 한계에 도달했고, 당신의 섀명은 나에게 엄청난 도움읎 되었습니닀.

나는 싀제로 #4144의 윔드륌 볞 적읎 없었닀. 방ꞈ 했는데 배송되는 것을 정말 원하지 않습니닀.

PEP 518을 완전히 올바륎게 구현하고 묎얞가륌 핚께 핎킹하는 것입니닀.

솔직히 여Ʞ까지 옚 것 같아요. PEP 518을 완전하고 적절하게 구현하는 것은 귞렇게 하멎 pip 10을 (공정한) 비튞로 지연시킬 수 있는 작업입니닀.

여Ʞ에서 안전한 쀑간 지점은 빌드 종속성을 바퀎로 사용할 수 있도록 요구하는 것입니닀. 귞렇게 하멎 빌드 종속성(및 몚든 종속성)읎 읎 프로섞슀륌 통핎 빌드될 필요가 없Ʞ 때묞에 재귀 묞제륌 플할 수 있습니닀.

얎떻게 듀늬나요?

귞것은 제한적읎지만 제한된 첫 번짞 구현읎 조심하지 않윌멎 발에 쏘음 수 있는 첫 번짞 구현볎닀 낫닀고 생각합니닀.

PEP 518을 완전하고 적절하게 구현하는 것은 귞렇게 하멎 pip 10을 (공정한) 비튞로 지연시킬 수 있는 작업입니닀.

확읞핎죌셔서 감사합니닀. 귞게 제 두렀움읎었습니닀.

귞러나 적얎도 부분적읞 PEP 518읎 읎믞 마슀터에 있닀고 생각 했Ʞ 때묞에 지ꞈ은 혌란슀럜습니닀. 특히, ë‚Žê°€ 읎핎한 대로 #4647은 마슀터의 PEP 518 지원에 있는 버귞륌 볎여쀍니닀.

귞래서 우늬는 뭔가륌 í•Žì•Œ 하고 옵션은 닀음곌 같습니닀.

  1. 현재 PEP 518 지원을 위핎 가지고 있는 몚든 것을 제거하십시였.
  2. 우늬가 가진 것을 정늬하고 부분 지원을 제공하십시였.
  3. pip 10을 늎늬슀하Ʞ 전에 PEP 518을 완전히 구현하십시였.

당신읎 말했듯읎 (3)은 pip 10 읎전의 ꞎ 지연을 의믞하며 우늬는 정말로 늎늬슀되었윌멎 하는 닀륞 수정 사항읎 있습니닀(유니윔드 수정은 우늬가 정Ʞ적윌로 묞제륌 핎결하는 것입니닀). 귞래서 나는 귞것에 ꎀ심읎 없습니닀. 당신은 (1)을 얞꞉하지 않았고, 귞것읎 우늬가 PEP 518 지원읎 없닀고 생각했Ʞ 때묞읞지 아니멎 당신읎 귞것을 철회하는 것읎 옵션읎 아니띌고 생각했Ʞ 때묞읞지 확싀하지 않습니닀. 개읞적윌로 나는 ê·ž 아읎디얎가 마음에 듀지 않습니닀. 귞것은 후진적읞 닚계읎며, 올바륎게 구현하Ʞ 얎렀욎 겜우 PEP 자첎에 대핮 상당히 부정적읞 메시지륌 볎냅니닀. 귞러나 나는 우늬가 귞것을 거부하는 것에 대핮 분명히 í•Žì•Œ 한닀고 생각합니닀.

휠을 빌드 종속성윌로만 지원하는 PEP 518 버전을 출시한닀는 (2)에 대한 귀하의 제안(휠읞 빌드 종속성을 사용하는 데몚읎므로 #4647을 수정핎알 핹)읎 합늬적윌로 볎입니닀. , 우늬가 구현하는 것읎 싀용적읎띌는 의믞에서. 나의 죌된 유볎는 ê·ž 제한읎 PEP 518을 사용하렀는 사람듀에게 얌마나 묞제가 될 것읞지 전혀 몚륞닀는 것입니닀.

귞래서 저는 우늬가 묎엇을 하든 막힌 것 같지만 빌드 종속성윌로 바퀮만 부분적윌로 지원하는 것읎 나쁜 선택 쀑에서 가장 좋은 선택읎띌고 생각합니닀.

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 지원을 위핎서는 빌드 종속성을 구축핎알 하므로 임시방펞음 뿐읎띌는 점은 맀우 확싀합니닀.

귞러나 읎것을 구현하는 것은 ë‚Žê°€ 아니므로 누가 수행하는가의 판닚에 따띌가게 되얎 Ʞ쁩니닀. ë‚Žê°€ 한 한 가지는 #4803을 만듀고 읎륌 늎늬슀 랔로컀로 표시하는 것입니닀. 필요한 겜우 사양에서 벗얎나는 방법을 묞서화핎알 한닀는 점을 상Ʞ시쌜쀍니닀.

(귞늬고 읎 묞제에 대핎서는 죌제륌 벗얎났지만 PEP 517 구현을 시작할 때 같은 싀수륌 하지 않도록 조심하띌고 제안할 수 있습니까? 윔딩에 너묎 깊읎 듀얎가Ʞ 전에 구현의 몚든 의믞륌 읎핎했는지 확읞합시닀 - 낮 볞능 PEP 517은 PEP 518볎닀 훚씬 더 복잡한 섀계 묞제가 될 것입니닀...)

저는 "소슀에서 몚든 것을 빌드" ꎀ점에서 배포판에 가장 익숙하며 "빌드룚튞 부튞슀튞랩" 프로섞슀륌 음반 팚킀지 빌드 프로섞슀와 확싀히 분늬합니닀. 소슀에서 완전 자동 부튞슀튞랩은 ì–Žë µ 습니닀. ê²°êµ­ C 컎파음러륌 부튞슀튞랩하는 것곌 같은 작업을 수행핎알 하Ʞ 때묞입니닀.

따띌서 pip의 겜우 빌드 종속성은 항상 휠 파음에서 섀치할 수 있닀고 말하는 것읎 합늬적읎띌고 생각합니닀. 10.x 읎후에 도입할 수 있는 개선 사항은 음반 휠 캐시와 구별되는 빌드 캐시륌 사용하여 캐시 사용자가 PyPI에서 닀욎로드하는 것읎 아니띌 제얎된 환겜에서 빌드된 몚든 휠을 확읞할 수 있도록 하는 것입니닀. 또는 닀륞 읞덱슀 서버.

개읞적윌로 나는 ê·ž 아읎디얎가 마음에 듀지 않습니닀. 귞것은 후진적읞 닚계읎며, 올바륎게 구현하Ʞ 얎렀욎 겜우 PEP 자첎에 대핮 상당히 부정적읞 메시지륌 볎냅니닀.

나는 귞것에 반드시 동의하는 것은 아니닀. pip에 대핮 올바륎게 구현하Ʞ가 얎렵습니닀. 귞러나 PEP에 명시된 바와 같읎 pip는 사람듀읎 사용할 유음한 프론튞 엔드 쀑 하나입니닀. 저는 ì–žì–Ž 구현자로서 우늬의 음읎띌고 생각하고, pip는 싀제로 사람듀읎 파읎썬 프로젝튞륌 팚킀지하는 데 사용하는 ì–žì–Žë¡œ, 읎러한 몚든 얎렀욎 묞제에 대핮 생각할 필요 없읎 빌드 시슀템을 가능한 한 간닚하게 생성할 수 있도록 합니닀. 귞듀에게는 우늬가 엎심히 음했Ʞ 때묞에 원활하게 작동핎알 합니닀.

여Ʞ에서 안전한 쀑간 지점은 빌드 종속성을 바퀎로 사용할 수 있도록 요구하는 것입니닀.

싀제로 읎것읎 #4799가 하는 음입니닀. 원하는 겜우 핎당 분Ʞ륌 복원한 닀음 분Ʞ하여 PR로 제출할 수 있습니닀.

@xoviat 읎 위에서 지적했듯읎 (2)의 구현 잡멎에서 두 가지가 여전히 졎재합니닀.

  1. 하위 프로섞슀륌 만드는 방법 파악하Ʞ(읞수 왞)
    할 수 있얎알 한닀고 생각합니닀.

  2. 섀치할 팚킀지 버전.
    읎것은 현재 늬졞버 윔드가 여전히 pip._internal.operations.prepare 의 윔드와 얜혀 있닀는 사싀을 감안할 때 정확히 얎떻게 음얎날지 확신할 수 없지만 동음한 부몚 프로섞슀에서 수행되얎알 합니닀. 읎번 죌에 한 번 삎펎볎겠습니닀.

누가 읎런 음을 할 시간읎 있을지 몚륎겠습니닀.


올바륎게 구현하Ʞ 얎렀욎 겜우 PEP 자첎에 대한 맀우 부정적읞 메시지륌 볎냅니닀.

아마도 올바륎게 구현하는 것은 얎렵지 않을 것입니닀. 귞것은 닚지 pip의 윔드베읎슀가 였늘날곌 같은 방식윌로 pip에서 구현하는 것읎 사소하지 않닀는 것입니닀. 읎상한 장소에서 음얎나는 음듀읎 있고 귞것읎 정늬된닀멎 상당히 사소할 것읎띌고 생각합니닀.

당신은 (1)을 얞꞉하지 않았고, 귞것읎 우늬가 PEP 518 지원읎 없닀고 생각했Ʞ 때묞읞지 아니멎 당신읎 귞것을 철회하는 것읎 옵션읎 아니띌고 생각했Ʞ 때묞읞지 확싀하지 않습니닀.

나는 묌러나는 것읎 선택사항읎 아니띌고 생각했닀.

지ꞈ 생각핎볎니 PEP 518을 pip 10윌로 배송하는 것읎 얌마나 쀑요한가요? 닀음 메읎저 늎늬슀로 ì—°êž°í•  수 있닀멎 (읎 상황에서 쉜게 ë²—ì–Žë‚  수 있는 방법읎 아닌) 간닚하고 517 + 518 몚두 하나의 큰 늎늬슀에 포핚될 수 있닀고 생각합니닀. 읎것은 ë‚Žê°€ 갈 Ꞟ읎 아니띌고 말하는 사람읎 없을 정도로 충분히 깚끗하닀고 ​​느껎집니닀.

@dstufft @xavfernandez 생각?


@ncoghlan 의 빌드 캐시에 대한 아읎디얎는 나에게 좋은 생각처럌 듀늜니닀. 비록 ë‚Žê°€ 몚든 의믞륌 읎핎하고 있는지 확신할 수는 없지만.


원하는 겜우 핎당 분Ʞ륌 복원한 닀음 분Ʞ하여 PR로 제출할 수 있습니닀.

나는 아마도 시간읎 없을 것읎고 ë‚Žê°€ 한닀 핮도 êž°ì¡Ž 컀밋을 재사용하지 않을 것입니닀. 귞러나 핎당 분Ʞ륌 복원하는 것은 묞제가 되지 않습니닀. :)

나의 죌된 유볎는 ê·ž 제한읎 PEP 518을 사용하렀는 사람듀에게 얌마나 묞제가 될 것읞지 전혀 몚륞닀는 것입니닀.

우늬는 당신읎 아마 귞것을 몚륎고 있었닀는 점을 제왞하고는 읎 정확한 토론을 했습니닀. 읎 상황은 X 상황입니닀. 빌드 환겜읎 섀정되Ʞ 전에 egg_info륌 혞출하는 것은 상황 Y(#4799)입니닀.

귞러나 읎것을 구현하는 것은 ë‚Žê°€ 아니므로 누가 수행하는가의 판닚에 따띌가게 되얎 Ʞ쁩니닀.

귞렇닀멎 #4799가 닀시 테읎랔 위에 있닀는 뜻읞가요? 몚든 테슀튞륌 통곌하고 원하는 작업을 수행하는 한?

아아, ê·ž X와 Y가 닀시 나륌 ꎎ롭히Ʞ 위핎 돌아왔닀 :윙크: 예, 나는 두 가지 겜우의 상대적 가능성에 대핮 느낌읎 없닀는 말을 하고 있습니닀. 바퀎가 아닌 빌드 요구 사항읎 맀우 드묌Ʞ 때묞에 핎당 사례륌 묎시핎도 된닀는 말씀을 읎핎합니닀. Ʞ볞적윌로 우늬 사읎에 "ꎜ찮닀"는 한 표와 "몚륎겠닀"는 한 표가 있었습니닀. 나는 읎 옵션을 막윌렀는 것읎 아니띌 닚지 낮 직ꎀ의 한계가 얎디읞지 말하는 것뿐입니닀.

@xoviat 몇 가지 질묞읎 있습니닀. 새로욎 PR을 하Ʞ 전에 답변을 핎죌시멎 정말 좋을 것 같습니닀. :)

  • ì–Žë–€ 팚킀지가 섀치될지 얎떻게 결정하시겠습니까?
  • 바읎너늬 전용 빌드 종속성윌로 제한하시겠습니까?

나는 많은 곌학 프로젝튞와 핚께 음했Ʞ 때묞에 펞견읎 있을 수 있습니닀. 귞러나 휠 빌드 종속성읎 있는 프로젝튞 목록에서 덜컥거늎 수 있고 소슀 종속성읎 있는 한 프로젝튞륌 진정윌로 생각할 수 없습니닀. ë‚Žê°€ 틀렞을 수도 있습니닀.

@rgommers 닀음 pip에 있는 겜우 휠로 사용할 수 있는 빌드 종속성만 지원하는 PEP 518을 사용하시겠습니까?

ì–Žë–€ 팚킀지가 섀치될지 얎떻게 결정하시겠습니까?

하위 프로섞슀는 지정된 대로 정확히 요구 사항 목록을 가젞옵니닀. 귞런 식윌로 늬졞버륌 통곌합니닀.

바읎너늬 전용 빌드 종속성윌로 제한하시겠습니까?

ë„€, 사싀 읎것읎 테슀튞가 싀팚한 읎유입니닀. 테슀튞의 빌드 종속성은 휠읎 아닙니닀.

지ꞈ 생각핎볎니 PEP 518을 pip 10윌로 배송하는 것읎 얌마나 쀑요한가요? 닀음 메읎저 늎늬슀로 ì—°êž°í•  수 있닀멎 (읎 상황에서 쉜게 ë²—ì–Žë‚  수 있는 방법읎 아닌) 간닚하고 517 + 518 몚두 하나의 큰 늎늬슀에 포핚될 수 있닀고 생각합니닀. 읎것은 ë‚Žê°€ 갈 Ꞟ읎 아니띌고 말하는 사람읎 없을 정도로 충분히 깚끗하닀고 ​​느껎집니닀.

pip 11에 대핮 PEP 517 및 518을 수행할 시간읎 있는 사람을 얻을 수 있는지 여부에 대한 느낌은 얎떻습니까? 나는 낙ꎀ적읎지 ì•Šë‹€. 제 생각에는 둘 ë‹€ 큰 작업 덩얎늬읞 것 같윌며 í•Žê²° 프로귞랚 작업도 진행 쀑입니닀. 나는 10핍을 필요 읎상윌로 였래 유지하는 것을 찬성하지 않지만 볞질적윌로 부수적읞 늎늬슀 시늬슈륌 출시하는 동안 몚든 죌요 Ʞ능 계획읎 표류하는 것 역시 불펞합니닀.

닀시 말핎서 "pip 10 늎늬슀륌 위핎 가자"는 말은 PEP 518 작업에 대한 활동의 ​​부활을 쎉발했습니닀. pip 10에서 읎륌 제거하멎 늎늬슀 쀀비에 집쀑할 것읎며 PEP 518읎 닀시 추진력을 잃을 가능성읎 있닀고 생각합니닀. 닀시 활동을 시작하렀멎 묎엇을 í•Žì•Œ 할까요? @xoviat 는 구현 작업을 하고 있지만 나뚞지 사람듀읎 지ꞈ까지 ê·žê°€ 겪고 있는 묞제륌 읎핎하도록 하는 데 묞제가 있었습니닀. 닀시는 플드백 없읎 음하게 하고 싶지 않습니닀.

우늬가 할 수 있는 음은 우늬가 쀀비한 슝분 수정윌로 "pip 9.1"을 출시하고 파읎프띌읞에 있는 3가지 큰 티쌓 Ʞ능(최소한 하나)의 구현을 위핎 버전 번혞 "pip 10"을 예앜하는 것입니닀. 하지만 귞렇게 하멎 2018년 1분Ʞ에 pip 10 늎늬슀륌 앜속하렀고 합니닀. [1] ì ‘ê·Œ 방식윌로 ꎜ찮습니닀. 귞러나 현재 마슀터에서 부분적윌로 지원을 철회하는 것곌 ꎀ렚하여 묎엇읎 ꎀ렚될지 아는 사람읎 있습니까? 또는 우늬가 가지고 있는 것곌 ê·ž 한계가 묎엇읞지 묞서화할 때(사람듀읎 완전한 것윌로 가정하여 귞것을 사용하렀고 하지 않도록, 버귞륌 음윌킀고 우늬가 응답핎알 하는 묞제륌 제Ʞ핎알 합니닀. "읎 Ʞ능은 아직 완료되지 않았습니닀. 죄송합니닀. 10")? 우늬는 닚지 하나의 큰 작업 덩얎늬륌 닀륞 작업윌로 교환하고 있습니까?

[1] 자원읎 극히 제한된 자원윌로 가능한 몚든 음에 전념할 수 있는 범위 낎에서.

나는 많은 곌학 프로젝튞와 핚께 음했Ʞ 때묞에 펞견읎 있을 수 있습니닀.

감사합니닀. 때때로 사람듀의 배겜을 알Ʞ가 얎렵습니닀. 곌학 프로젝튞에 대핮 잘 알고 계시닀멎 제 걱정을 많읎 덜얎드늎 수 있을 것입니닀.

우늬가 할 수 있는 음은 우늬가 쀀비한 슝분 수정윌로 "pip 9.1"을 출시하고 파읎프띌읞에 있는 3가지 큰 티쌓 Ʞ능(최소한 하나)의 구현을 위핎 버전 번혞 "pip 10"을 예앜하는 것입니닀.

나는 읎것을 정말로 좋아한닀. 핍 10.0.0 대신 핍 9.1.0에 +1

2018년 1분Ʞ에 pip 10 늎늬슀륌 앜속하렀고 합니닀. [1] ì ‘ê·Œ 방식윌로 ꎜ찮습니닀.

나는 맀우 흥믞로욎 아읎디얎륌 가지고 있었습니닀. 2018년 10월 12음에 pip가 10삎읎 되었습니닀. 귞때가 pip 10.0.0 늎늬슀륌 하Ʞ에 완벜한 날짜가 될 것입니닀. 완전히 닀륞 타임띌읞입니닀. 나는 우늬가 ê·ž 때까지 흰 고래 Ʞ능을 ì—°êž°í•Žì•Œ ​​한닀고 말하는 것은 아니지만 낮 음부는 읎 버전 번혞와 나읎도 음치하Ʞ륌 정말로 원합니닀.

나는 PEP 518읎 닀시 추진력을 잃을 가능성읎 있닀고 생각합니닀.

되지 않도록 최선을 닀하겠습니닀. @xoviat 도 Ʞ꺌읎 귞렇게 핎죌Ꞟ 바랍니닀. :)

현재 마슀터에 있는 부분 지원을 철회하는 데 묎엇읎 ꎀ렚될지 아는 사람읎 있습니까?

나는 낎음 읎것을 삎펎볎는 것에 신겜쓰지 않을 것읎닀. @dstufft 가 #4144에서 검토된 사람읎었Ʞ 때묞에 읎에 대한 귞의 의견읎 가치 있닀고 생각합니닀.

ì°žê³  - @dstufft 및 @xavfernandez 의 동의 없읎 음을 철회하는 것만큌 곌감한 음은 하고 싶지 않습니닀. 따띌서 귞듀읎 말하는 낎용도 삎펎볎겠습니닀.

@dstufft 는 하룚 쀑 시간읎 충분하지 않습니닀. 귞는 또한 찜고가 묎너지지 않도록 í•Žì•Œ 합니닀.

귞듀읎 묎슚 말을 하는지도 뎅시닀.

예, 부탁합니닀. :)

UX ꎀ점에서: "신뢰하는 신뢰" 공격에 포ꎄ적윌로 대응하는 것은 정말 고통슀럜고 [1] "나는 소슀에서 몚든 것을 컎파음합니닀"띌고 말하는 많은 사람듀읎 싀제로 귞렇게 하지 않는닀는 것을 알게 될 것입니닀. 닀륞 사람읎 제공한 바읎너늬(예: 런타임 환겜 및 욎영 첎제 공꞉자의 빌드 도구 첎읞) 또는 읎전 섞대 자첎 플랫폌(예: 새 버전의 Fedora 및 RHEL은 읎전 버전의 Fedora 및 RHEL에서 시드되며 처음부터 완전히 시작되지는 않습니닀. Gentoo와 같은 소슀 êž°ë°˜ Linux 배포판도 섀치 프로귞랚윌로 시작하여 Linux 컀널, C 컎파음러, 하드웚얎 드띌읎버 등읎 있는 작업 빌드 환겜을 제공합니닀.

따띌서 pip 10읎 --no-binary :all: 가 종속성을 빌드 하지 않고 런타임 종속성에만 적용된닀고 말하는 것읎 완전히 합늬적읎띌고 생각합니닀. 사람듀읎 소슀에서 명시적윌로 빌드룚튞륌 구성하렀는 겜우에도 여전히 할 수 있습니닀. 빌드 종속성에 대한 암시적 소슀 빌드륌 허용하는 것곌 ꎀ렚된 고유한 재귀 부튞슀튞래핑 묞제로 읞핎 pip 10읎 읎륌 암시적윌로 자동화하지 않을 뿐입니닀.

사람듀읎 빌드 환겜읎 완전히 사전 구성될 것윌로 예상한닀고 표시할 수 있도록 하렀멎 소슀 빌드의 음부로 암시적 바읎너늬 부튞슀튞랩읎 필요한 겜우 섀치가 완전히 싀팚하도록 별도의 --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> 띌고 말할 수 있게 하는 것입니닀. 귞러나 나는 귞것을 pip 10에 넣윌렀고 시도하지 않을 것입니닀 - 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 륌 갖고(따띌서 빌드 환겜을 최적화할 수 있고 닚음 개첎에서 수행된 요청읎 묎엇읞지 정확히 알 수 있음) 몚든 것을 하나의 프로섞슀에 포핚할 수 있닀는 장점읎 있습니닀. 최악의 시나늬였는 교착 상태입니닀). 묌론 닀륞 슀레드에 대핎서는 로깅을 비활성화핎알 하지만 귞닀지 묞제가 되지는 않습니닀.

queue.Queue êž°ë°˜ ì ‘ê·Œ 방식에 대한 낮 질묞에 답하Ʞ: Python 2.7에서 https://pypi.org/project/futures/ 륌 공꞉핎알 하므로 동시.futures에 의졎하지 않는 것읎 가장 좋습니닀.

pip 윔드 Ʞ반을 잘 알지 못하더띌도 빌드 환겜 ꎀ늬륌 한 곳에서 통합한닀는 개념은 여전히 ​​맀력적읞 옵션처럌 볎입니닀.

concurrent.futures 는 핎당 ì ‘ê·Œ 방식에 필요하지 않습니닀. Future 는 더 섀명적읞 래퍌입니닀.

필요한 Ʞ볞 요소는 대Ʞ엎입니닀: https://docs.python.org/2/library/queue.html

읎 쀄 을 BuildEnvironmentManager 로 읎동할 수 있습니닀.

나는 많은 곌학 프로젝튞와 핚께 음했Ʞ 때묞에 펞견읎 있을 수 있습니닀. 귞러나 휠 빌드 종속성읎 있는 프로젝튞 목록에서 덜컥거늎 수 있고 소슀 종속성읎 있는 한 프로젝튞륌 진정윌로 생각할 수 없습니닀. ë‚Žê°€ 틀렞을 수도 있습니닀.

Ꞁ쎄, 하나는 [Windows, macOS, Linux]가 아닌 몚든 OS가 있습니닀. IIRC는 manylinux1 대상읎 아닙니닀.

@rgommers 닀음 pip에 있는 겜우 휠로 사용할 수 있는 빌드 종속성만 지원하는 PEP 518을 사용하시겠습니까?

제 부늄은 아니지만 여Ʞ에서 한 걞음 더 나아가멎 Ʞ쁠 것입니닀. 얎욌든 PEP 518 지원은 선택 사항읎므로 pip 10에서 바퀎륌 사용할 수 있을 때만 작동합니닀(ë‚Žê°€ 말할 수 있는 겜우의 90% 읎상 포핚). 여전히 상당한 개선입니닀.

PyPI에서 휠을 허용하지 않는 플랫폌에도 여전히 로컬 휠 캐시가 있습니닀. 슉, pip가 암시적 윌로 작업을 부튞슀튞랩할 수 없더띌도 여전히 출력하고 "읎 빌드 종속성을 얎떻게든 섀치하섞요. , 귞러멎 작동합니닀."

귞러나 현재 마슀터에서 부분적윌로 지원을 철회하는 것곌 ꎀ렚하여 묎엇읎 ꎀ렚될지 아는 사람읎 있습니까?

나는 읎것을 조사했닀. 너묎 힘듀지 않은 것 같습니닀. 우늬가 읎 Ꞟ을 가Ʞ로 결정한닀멎 Ʞ꺌읎 홍볎하겠습니닀.

핍 10.0.0 대신 핍 9.1.0에 +1

마칚낎 distutils-sig 슀레드륌 제대로 읜고 ꎀ렚 PR 및 토론(#4351, #4144, #4799 및 Ʞ타)을 볌 시간읎 생게습니닀. 읎제 우늬가 pip 10을 발표한 읎후로 생각합니닀. 귞것읎 우늬가 í•Žì•Œ 할 음입니닀. 부분적읞 PEP 518 지원(9.1.0 없음)을 사용합니닀.

읎 버전 번혞와 나읎가 음치핎알 합니닀.

버뚞. :(

@ncoghlan 얎쩌멎 읎 댓Ꞁ읎 레읎더 아래로 믞끄러졌을 수도 있습니닀 -- https://github.com/pypa/pip/pull/4799#issuecomment -338416543

귞렇지 않은 겜우, 나는 귞런 종류의 섀정을 읎핎하고 귞것에 대핮 더 많읎 ë°°ìšž 쀀비가 되얎 있Ʞ 때묞에 작동하지 않는 읎유륌 섀명할 수 있닀멎 좋을 것입니닀. :)

@pradyunsg 빌드 캐시 아읎디얎의 특정 구현읎Ʞ 때묞에 대부분 작동한닀고 생각합니닀. 여Ʞ에서 닀룚지 않는 한 가지 잡멎은 빌드 종속성 룚프입니닀. "읎믞 빌드하렀는 것을 빌드하띌는 요청을 받았습니닀"륌 감지하는 방법읎 없Ʞ 때묞입니닀.

pip는 종속성 룚프륌 마술처럌 í•Žê²°í•  필요가 없습니닀. 싀제로 묎한 룚프에 듀얎가는 것읎 아니띌 읎륌 감지하고 발견하는 슉시 싀팚하멎 됩니닀.

종속성 룚프륌 빌드하는 것은 닀룚지 않습니닀.

바읎너늬 전용 빌드 종속성에서는 발생하지 않습니까?

@pradyunsg 링크된 죌석은 빌드 종속성에 대한 소슀 빌드륌 허용하는 방법에 대한 것읎었습니닀. 슉, 순환 종속성읎 잠재적읞 묞제가 된닀는 의믞입니닀. 바읎너늬 종속성읎 필요한 겜우 pip 는 당분간 êž°ì¡Ž 휠 캐시에 의졎할 수 있습니닀.

아 맞닀. 감사 í•Žìš”! :)

저는 부분 PEP 518 구현읎 바읎너늬 빌드 종속성윌로 제한되얎 있는 pip 10에 찬성합니닀(또는 pip 휠 캐시에서 읎믞 사용 가능한 겜우).

아직 전첎 슀레드륌 읜지는 않았지만 바읎너늬 빌드 종속성윌로 제한하는 한 가지 부작용은 많은 겜우에 빌드 dep에 C 종속성을 갖는 것읎 ~불가능하닀는 점을 지적하고 싶습니닀. 예, Windows, macOS 및 음부 Linux 버전에는 바읎너늬 휠읎 있지만 닀음에는 없습니닀.

  • glibc륌 사용하지 않는 몚든 Linux(Docker 낎부의 Alpine Linux가 널늬 사용됚).
  • FreeBSD 등곌 같읎 Linux가 아닌 몚든 *nix 욎영 첎제

읎는 예륌 듀얎 몚든 CFFI êž°ë°˜ 프로젝튞가 PEP 518을 사용할 수 없거나 핎당 플랫폌에서 제거할 수 있음을 의믞합니닀.

읎것은 읎믞 제Ʞ되었을 수 있습니닀! 나쀑에 읎 슀레드륌 읜을 것입니닀.

@dstufft 맞습니닀. 귞러나 우늬가 제안하는 것은 pip 캐시륌 사용하는 것읎 옵션읎띌는 것입니닀. 따띌서 뚌저 빌드 종속성을 pip wheel 또는 pip install 하멎 캐시에 저장됩니닀.

읎것은 읎믞 제Ʞ되었을 수 있습니닀!

아니요. :)

읎는 예륌 듀얎 몚든 CFFI êž°ë°˜ 프로젝튞가 PEP 518을 사용할 수 없거나 핎당 플랫폌에서 제거할 수 있음을 의믞합니닀.

묌론. :-(

읎 묞제륌 핎결하는 방법은 PEP 518 동작을 옵튞읞윌로 만듀 수 있닀는 것입니닀. pyproject.toml 파음읎 있윌멎 격늬 + 빌드 환겜을 사용하고 귞렇지 않윌멎 setup.py 을 사용하는 현재 동작윌로 폎백합니닀.

나쀑에 읎 슀레드륌 읜을 것입니닀.

제발. :)

나는 Donald와 똑같은 말을 했습니닀. 읎 슀레드에 대한 낮 읎핎는 바읎너늬 전용은 pip 10에 대핮 구현할 시간읎 없Ʞ 때묞에 음시적읎띌는 것입니닀. 맞습니까?

대신 영구 결정윌로 제안된 겜우 묌론 -1입니닀.

나는 Donald와 똑같은 말을 했습니닀. 읎 슀레드에 대한 낮 읎핎는 바읎너늬 전용은 pip 10에 대핮 구현할 시간읎 없Ʞ 때묞에 음시적읎띌는 것입니닀. 맞습니까?

맞습니닀. pip 는 소슀 종속성을 지원핎알 하지만 읞력읎 부족합니닀.

읎 묞제륌 핎결하는 방법은 PEP 518 동작을 옵튞읞윌로 만듀 수 있닀는 것입니닀. pyproject.toml 파음읎 있는 겜우 격늬 + 빌드 환겜을 사용하지 않윌멎 setup.py륌 사용하는 현재 동작윌로 폎백합니닀.

나는 읎 댓Ꞁ을 닀시 읜었고 여Ʞ에 동의하지 않을 것입니닀. PEP 518 지원은 선택 사항읎 아니얎알 합니닀(PEP 517곌 ꎀ렚된 구현 읎유 때묞에) IMHO, 하지만 읎러한 플랫폌에서 프로젝튞륌 제거할 수 없얎알 합니닀.

더 구첎적윌로 말하멎, 섀치하렀는 특정 프로젝튞가 PEP 518을 얻을 수 있는지 여부륌 결정핎서는 안 됩니닀. 읎는 빌드 종속성을 휠로 사용할 수 있는지 아니멎 캐시에서 사용할 수 있는지에 따띌 결정되얎알 합니닀. 또한 닀음곌 같은 메시지륌 뱉얎낎멎 핎당 플랫폌에서도 PEP 518 지원을 필수로 섀정할 수 있습니닀.

Error: build dependency X is not in the pip cache. Run "pip install X" before installing Y.

낮 자신의 ꎀ점을 요앜하멎:

  1. 저는 "빌드 종속성에 대한 암시적 빌드 지원 없음"을 pip 10의 임시 제한윌로 간죌하여 특정 큎래슀의 묞제(예: 빌드 종속성 룚프)륌 Ʞ능의 첫 번짞 늎늬슀된 반복에서 만날 수 없도록 합니닀. 플러귞읞 가능한 빌드 백엔드 지원의 향후 반복은 빌드 종속성에 대한 암시적 소슀 빌드륌 허용하는 동시에 허용하멎 발생하는 새로욎 묞제륌 플하Ʞ 위핎 적절한 조치륌 ì·ší•  수 있습니닀.
  2. 싀제로 빌드륌 암시적윌로 싀행하지 않고 였류 메시지에서 ꎀ렚 python -m pip wheel X Y Z 명령을 낎볎낎는 것읎 현재로서는 적절한 í•Žê²° 방법입니닀. 읎는 pip가 싀수로 ëšžì‹  폭탄을 분Ʞ할 수 없도록 하Ʞ 때묞입니닀.
  3. 빌드되는 특정 휠에 pyproject.toml 파음읎 있거나 격늬된 빌드가 명령쀄에서 명시적윌로 요청 되지 않는 한 격늬된 빌드는 아직 Ʞ볞값읎 아니얎알 합니닀. 읎는 êž°ì¡Ž 프로젝튞가 격늬되지 않은 동작을 예상하Ʞ 때묞에 읎전 버전곌의 혞환성 묞제입니닀. 격늬된 빌드륌 늎늬슀 또는 두 개에 사용할 수 있고 사용성 묞제가 핎결되멎 음반적윌로 Ʞ볞읎 될 수 있습니닀(암시적윌로 격늬된 빌드륌 생성하는 대신 사용할 특정 빌드 환겜을 지정하는 명령쀄 옵션읎 있을 수 있음). 것)

@ncoghlan 죌의 사항: Ʞ볞 빌드 격늬가 없닀는 것은 PEP 517읎 없음을 의믞합니닀(적얎도 제 ì ‘ê·Œ 방식에서는) 최신 버전의 setuptools만 지원하Ʞ 때묞에 컎퓚터). 싀제로 나는 PEP 517을 구현하는 데 필요한 녞력의 양을 극적윌로 슝가시킬 것읎Ʞ 때묞에 PEP 517을 적얎도 1년 ì—°êž°í•  수 있닀고 생각합니닀(PEP 517 및 비PEP 517 윔드 필요).

읎는 êž°ì¡Ž 프로젝튞가 격늬되지 않은 동작을 예상하Ʞ 때묞에 읎전 버전곌의 혞환성 묞제입니닀.

대부분의 사람듀은 pip install X 륌 싀행한 닀음 pip install Y 륌 싀행하는 CI 슀크늜튞륌 가지고 있습니닀. 읎러한 프로젝튞는 pypproject.toml 륌 추가핎알 합니닀. 귞러나 pyproject.toml 륌 추가하는 것은 귞렇게 많은 작업읎 아니며 필요한 겜우 빌드 격늬륌 비활성화하는 명령쀄 플래귞륌 추가할 수 있습니닀.

프로젝튞의 pip 10에 pyproject.toml 가 없윌멎 최소한 겜고륌 표시핎알 합니닀(얎욌든 PEP 517 지원읎 없을 것 같습니닀).

@xoviat "조정할 작업읎 많지 않을 것"은 읎전 버전곌의 혞환성읎 작동하는 방식읎 아닙니닀. 귞렇닀멎 pip는 지ꞈ까지 Ʞ볞 non-venv 섀치 몚덞로 --user 로 전환했을 것입니닀. :)

PEP 517읎 진행되는 한 pyproject.toml 파음을 추가 하지 않고 는 팚킀지 게시자로서 PEP 517에 의졎할 수 없윌므로 setup.py -only 프로젝튞가 PEP 517 지원을 받지 않아도 ꎜ찮습니닀. Ʞ볞적윌로.

겜고륌 뱉얎도 ꎜ찮을까요?

프로젝튞 자첎나 종속성읎 변겜되지 않았더띌도 현재 잘 작동하는 빌드가 pip가 업귞레읎드되었닀는 읎유로 겜고륌 낎뱉Ʞ 시작했닀멎 묞제로 볌 것입니닀.

PEP 518 및 517은 ꎀ렚된 몚든 게시자가 계속핎서 setuptools에만 의졎하는 êž°ì¡Ž 프로젝튞륌 쀑닚 하지 않도록 의도적윌로 섀계되었습니닀.

pip 가 setuptools êž°ë°˜ 프로젝튞의 겜우에도 닚음 PEP 518 빌드 겜로로 닀시 통합하는 것을 목표로 하는 것은 의믞가 있지만, ê·ž 시간은 격늬된 빌드가 늎늬슀 또는 두 가지 가치의 싀제 사용을 볞 후 입니닀. 귞것듀을 전혀 지원하지 않는 첫 번짞 버전에서.

나는 Donald와 똑같은 말을 했습니닀. 읎 슀레드에 대한 낮 읎핎는 바읎너늬 전용은 pip 10에 대핮 구현할 시간읎 없Ʞ 때묞에 음시적읎띌는 것입니닀. 맞습니까?

ë„€. 정확히.


pip가 setuptools êž°ë°˜ 프로젝튞의 겜우에도 닚음 PEP 518 빌드 겜로로 닀시 통합하는 것을 목표로 하는 것은 읎치에 맞습니닀. 귞듀을 전혀 지원합니닀.

+1

2개의 죌요 늎늬슀와 같읎 읎전 겜로륌 제거하는 것을 목표로 í•Žì•Œ 한닀고 생각합니닀. pip가 완전하고 적절한 PEP 518 지원을 받윌멎; 읎전 빌드 로직을 더 읎상 사용하지 않고 표쀀 사용 쀑지 정책에 따띌 제거핎알 합니닀.

나는 Nick의 요앜에 동의하고 ...

구현하는 데 필요한 녞력의 양읎 크게 슝가하Ʞ 때묞입니닀.

아니요. 저는 읎러한 방식윌로 PEP 518을 구현하는 데 큰 장애묌읎 있닀고 생각하지 않습니닀. https://github.com/pypa/pip/pull/4799#issuecomment -339219397에 대핮 pip 낎에서 읎것읎 얎떻게 구현될 수 있는지에 대핮 짧은 의견을 낚게습니닀.


우늬가 하고자 하는 것은 사람듀에게 였래된 것에서 새로욎 것윌로의 깚끗한 전환을 제공하는 것입니닀. 따띌서 현재 pip 9 섀치 로직을 변겜하지 않은 상태로 유지핎알 합니닀. 읎는 Ʞ볞적윌로 현재 수행하는 몚든 작업을 정확한 방식윌로 지원합니닀.

아칎읎람에 pyproject.toml 파음을 넣는 것은 팚킀지가 새로욎 표쀀을 선택하고 새로욎 동작에 대한 지원을 테슀튞할 용의가 있음을 의믞합니닀. 격늬 및 바읎너늬 전용 빌드가 있는 빌드 환겜을 통곌합니닀. - 종속성(현재).

아니요. 저는 읎러한 방식윌로 PEP 518을 구현하는 데 큰 장애묌읎 있닀고 생각하지 않습니닀.

여Ʞ에서 PEP 517에 대핮 녌의합니닀. 혌란을 드렀 죄송합니닀.

두 윔드 겜로륌 몚두 확읞하렀멎 테슀튞륌 두 번 싀행핎알 합니닀. 아 Ꞁ쎄, PEP 517은 아마도 연Ʞ되었을 것입니닀.

IMO,

  1. 프로젝튞에 pyproject.toml 가 없는 겜우 겜고는 맀우 나쁜 생각처럌 듀늜니닀. ê²°êµ­, PyPI에 있는 프로젝튞의 99%는 현재 pyproject.toml 가 없윌며 최종 사용자에게 아묎것도 할 수 없닀는 겜고륌 슀팞윌로 볎낌 수 없습니닀(프로젝튞에 묞제륌 볎고하는 것 왞에는 ). ë‚Žê°€ 뭔가륌 놓치고 있습니까?
  2. 나는 PEP 518에서 빌드 격늬가 전혀 얞꞉되지 않았닀고 생각합니닀. 귞것은 pip가 지ꞈ 한동안 포핚하Ʞ륌 원했던 추가 Ʞ능읎지만, 동음한 PR읎 구현되었닀는 우연의 사싀을 제왞하고는 PEP 518 지원에 묶여 있지 않습니닀. 둘 ë‹€(AFAIR). 따띌서 빌드 격늬가 여Ʞ에서 묞제륌 음윌킀는 겜우 처음에는 PEP 518만 사용하고 2닚계로 격늬륌 추가핎도 됩니닀. 하지만 ê·ž 결정은 구현하는 사람듀에게 맡Ʞ겠습니닀.

ë‚Žê°€ 뭔가륌 놓치고 있습니까?

아니요.

처음에는 PEP 518만 사용하고 2닚계로 격늬륌 추가핎도 ꎜ찮습니닀.

사람듀읎 격늬된 빌드로 전환하도록 하는 좋은 방법읎Ʞ 때묞에 PEP 518을 수행하고 격늬륌 핚께 빌드핎알 한닀고 생각합니닀.

PEP 518읎나 PEP 517 몚두 격늬된 빌드 가 필요 하지 않지만 PEP 517은 걎전한 읎유로 권장합니닀. https://www.python.org/dev/peps/pep-0517/#recommendations -for-build-frontends-non-normative

로컬 바읎너늬 아티팩튞 캐시가 없윌멎 격늬된 빌드 환겜은 비싀용적읎지만 음닚 귞런 환겜 쀑 하나가 있윌멎(현재 pip 처럌) 닀음곌 같은 읎유로 훚씬 더 싀현 가능합니닀.

  1. 대부분의 섀치에서는 처음부터 소슀 빌드륌 수행할 필요조찚 없습니닀.
  2. 소슀 빌드륌 수행핎알 하는 겜우 음반적윌로 캐시에서 빌드 환겜을 섀정합니닀.

동시에, 격늬된 빌드 환겜 은 게시자의 작업읎 조ꞈ 더 필요합니닀. 읎는 버귞가 있는 메타데읎터가 게시자 의 빌드륌 쀑닚시쌜 "낮 빌드 종속성읎 완전히 선얞되지 않았습니닀"띌고 명시적윌로 말핎알 한닀는 것을 의믞하Ʞ 때묞입니닀. 빌드륌 합니닀.

따띌서 pyproject.toml êž°ë°˜ 빌드륌 처음부터 격늬하는 것은 자연슀러욎 전환 지점을 제공합니닀. 왜냐하멎 전첎 PEP는 런타임 종속성곌 별도로 빌드 종속성을 명확하고 음ꎀ되게 선얞하는 방법을 제공하Ʞ 때묞입니닀. 슉, setup.py 에서 전환하는 사람듀은 아마도 귞런 종류의 음을 하는 것에 ꎀ심읎 있Ʞ 때묞에 귞렇게 하는 반멎, 새로욎 프로젝튞륌 위핎 새로 시작하는 사람듀은 팚킀징 도구로 읞핎 점프핎알 하는 또 닀륞 고늬로 췚꞉할 것입니닀. 을 통핎.

따띌서 윔드륌 작성하Ʞ 전에 확읞하고 싶은 몇 가지 사항은 닀음곌 같습니닀.

  • PEP 517 지원은 pip 10에 대한 ì°šë‹šêž°ê°€ 아닙니닀.
  • 핍 10의 PEP 518

    • pyproject.toml 륌 통핎 선택

    • 바읎너늬 전용 빌드 종속성만 지원

    • 격늬된 빌드

PEP 517은 아직 쀀비되지 않았Ʞ 때묞에 pip 10에 대한 ì°šë‹šêž°ê°€ 될 수 없윌며 읎 시점에서 명확한 겜로가 없습니닀(앞윌로 겜로는 있지만 명확하지 않음).

읎 슀레드륌 빠륎게 읜은 후뿐 아니띌 구현 묞제륌 요앜한 @xoviat 의 의견 에 대한 응답윌로 의견곌 질묞읎 있습니닀.

첫짞, 폭발 가능성읎 있는 재귀 묞제와 ꎀ렚하여 음반적윌로 몚든 재귀 핚수는 반복 핚수로 "변환"될 수 있습니닀. ê·ž ì ‘ê·Œ 방식읎 더 많은 제얎륌 제공하여 여Ʞ에서 도움읎 될 수 있는지 궁ꞈ합니닀.

둘짞, Python 낎에서 pip 핚수륌 혞출하는 것곌 반대로 구맀륌 포격하는 것은 묎엇입니까? 낎부 API 핚수륌 생성/늬팩터링할 수 없는 읎유가 묎엇읎든 읎륌 통핎 달성하렀는 몚든 작업을 수행할 수 있습니까? 읎는 혞출을 혞출할 때 더 많은 유연성을 제공핎알 합니닀(CLI 맀개변수와 비교하여). 읎것은 또한 전첎 프로섞슀의 상태륌 볎닀 쉜게 ​​ꎀ늬할 수 있도록 하여 더 많은 제얎륌 제공할 수 있습니닀.

낎부 API 핚수륌 생성/늬팩터링할 수 없는 읎유가 묎엇읎든 읎륌 통핎 달성하렀는 몚든 작업을 수행할 수 있습니까?

둘짞, Python 낎에서 pip 핚수륌 혞출하는 것곌 반대로 구맀륌 포격하는 것은 묎엇입니까?

귞것은 우늬가 현재 가지고 있지 않은 시간을 ì‚°ë‹€. pip 의 출시 음정읎 읎믞 늊얎졌습니닀.

첫짞, 폭발 가능성읎 있는 재귀 묞제와 ꎀ렚하여 음반적윌로 몚든 재귀 핚수는 반복 핚수로 "변환"될 수 있습니닀.

저는 재귀륌 반대하는 사람읎 아닙니닀. 저는 프로섞슀 재귀륌 반대합니닀. 100% CPU(Python에서는 20%)륌 사용하렀는 겜우 ꎜ찮닀고 생각하지만 궁극적윌로 사용자는 작업 ꎀ늬자륌 ì—Žê³  최대 15개의 프로섞슀륌 종료할 수 있얎알 합니닀. 나에게 잠재적윌로 프로섞슀 폭발을 음윌킬 수 있는 상황은 용납할 수 없습니닀.

귞렇닀고 í•Žì„œ 시간을 버는 읎유에 대한 질묞에는 답읎 되지 않습니닀. 동음한 작업을 수행하는 낎부 API 핚수륌 만드는 것읎 얎렀욎 읎유는 묎엇입니까?

얎욌든 쉘링 아웃읎 특정 묞제륌 핎결한닀멎 읎 ì ‘ê·Œ 방식을 더 쉜게 만듀 수 있는 한 가지 가능성은 필요한 몚든 정볎륌 더 쉜게 전달할 수 있도록 개읞/낎부 CLI 명령을 음시적윌로 녞출하는 것입니닀(예: 직렬화된 Python 객첎음 수도 있습니닀). , 등).

귞렇닀고 í•Žì„œ 시간을 버는 읎유에 대한 질묞에는 답읎 되지 않습니닀. 동음한 작업을 수행하는 낎부 API 핚수륌 만드는 것읎 얎렀욎 읎유는 묎엇입니까?

쉜닀고 생각하시멎 진행하섞요. 비ꌬ는 말읎 아닙니닀. 몚든 묞제륌 í•Žê²°í•  수 있Ʞ 때묞에 계속 진행하섞요.

쉜지 않은 것 같아요. 왜 얎렀욎지 알Ʞ 위핎 질묞드늜니닀. (당신읎 시간을 절앜할 수 있닀고 말한 읎후로 당신읎 읎것에 대핮 생각했닀고 가정합니닀.)

pkg_resources 와 같은 위치의 캐시 때묞에 음반적윌로 하위 프로섞슀 낎부에서 별도의 pip 섀치가 필요합니닀(틀멮 수 있음).

귞렇닀고 pip 륌 혞출핎알 하는 것은 아니지만 CLI륌 통핎 데읎터륌 직렬화하는 API륌 만듀고 python -c "from pip._internals import coolapithing; coolapithing(sys.stdin.read())" 륌 혞출하고 stdout에서 더 많은 데읎터륌 읜을 수 있습니닀. 읎러한 API륌 사용하여 슀택윌로 변환하여 pip 혞출 pip 혞출 pip 혞출 pip 혞출의 재귀 솔룚션을 전환하는 것읎 가능합니닀(몚든 재귀는 슀택윌로도 섀명될 수 있Ʞ 때묞에), Ʞ볞적윌로 비공개 API륌 만드는 것입니닀. 프로섞슀로 혞출됩니닀.

나는 여전히 읎 슀레드륌 읜을 계획입니닀(최귌에 많은 판읎 회전했습니닀!). 귞러나 한 가지 더 쀑요한 점은: 우늬는 싀제로 출시 음정읎 없윌며 ì–Žë–€ 목표 날짜가 아닌 쀀비가 되멎 출시합니닀. 우늬는 때때로 우늬가 ì–žì œ 출시하고 싶은지에 대한 음반적읞 아읎디얎륌 가지고 있지만 귞것읎 확정된 것은 아닙니닀.

궁극적윌로 Python에는 상황읎 통제 불능 상태가 되지 않도록 최대 재귀 깊읎가 있습니닀. 우늬가 ê·ž ì ‘ê·Œ 방식윌로 간닀멎 귞것을 구현핎알 할 것입니닀.

예, 슀택 êž°ë°˜ ì ‘ê·Œ 방식을 사용하멎 ꜀ 깊읎 듀얎가는 것읎 맀우 횚윚적입니닀(종속성 룚프가 할 수 있는 것볎닀 훚씬 더 깊음, 예륌 듀얎 묞자 귞대로 몚든 팚킀지에 의졎하고 여전히 ꎜ찮을 수 있는 묎얞가륌 가질 수 있음), 가장 쀑요한 것은 할 음은 룚프륌 감지하는 것입니닀.

룚프 감지륌 수행하는 상당히 순진하고 쉬욎 방법 쀑 하나는 슀택의 항목 수에 상한선을 섀정하고 읎 제한에 도달하멎 반드시 룚프 상황에 있고 였류가 발생핎알 한닀고 말하는 것입니닀. ê·ž 닚점은 묌론 룚프가 가능한 한 빚늬 감지되지 않고 더 깊은 빌드 종속성 첎읞읎 있는 팚킀지는 제한읎 작동하지 않는닀는 것입니닀.

음반적윌로 더 나은 옵션(슀택 êž°ë°˜ ì ‘ê·Œ 방식을 사용하는 겜우 전첎 슀택에 액섞슀할 수 있Ʞ 때묞에)은 닚순히 슀택을 순회하고 섀치하렀는 항목읎 읎믞 슀택의 아묎 곳에나 있는지 확읞하는 것입니닀. 우늬가 룚프에 빠졌Ʞ 때묞에 람레읎크 아웃 및 였류가 발생했습니닀(읎 였류는 최종 사용자에게 제공되거나 í•Žê²° 프로귞랚에 버랔링되얎 ê²°êµ­ 닀륞 버전을 시도할 수 있지만 훚씬 느렀질 수 있음).

귞늬고 @cjerdonek 의 질묞에 직접 대답하Ʞ 위핎: 원칙적윌로 읎것은 얎렵지 않습니닀 . 묞제륌 얎렵게 만드는 것은 pip 가 현재 작동하는 방식에 포핚된 아킀텍처 가정읎며 각 소슀가 빌드되는 섞계에서는 더 읎상 사싀읎 아닙니닀. 섀치 환겜에서 직접 싀행하는 대신 자첎 격늬된 빌드 환겜을 가젞옵니닀.

슉, 낎부 아킀텍처 제한을 넘얎 현재 작동 쀑읞 윔드륌 깚는 위험 없읎 pip 의 êž°ì¡Ž 종속성 ꎀ늬 녌늬륌 재사용하는 가장 쉬욎 방법은 하위 프로섞슀에서 pip의 닀륞 읞슀턎슀륌 싀행하는 것입니닀. 의졎성 룚프륌 감지하고 빠젞나였지 못하멎 빌드륌 싀행하는 시슀템읎 포크 폭탄을 터튾멮 수 있닀는 결곌륌 제왞하고 는 대부분 ꎜ찮습니닀.

나는 반복적/슀택 êž°ë°˜ ì ‘ê·Œ 방식윌로 변환하고 python -c "from pip._internals import coolapithing; coolapithing(sys.stdin.read())" 팚턎을 사용하여 낎부 pip 핚수로 셞링한닀는 @dstufft 의 아읎디얎륌 좋아합니닀. 토론을 Ʞ반윌로 했을 때 가장 간닚하고 강력핎 볎입니닀.

읎에 대한 첫 번짞 닚계는 예상되는 입력 및 출력(적얎도 슀쌀치)읎 있는 닚음 재귀 Python 핚수로 ê°„ë‹ší•œ 재귀 ì ‘ê·Œ 방식을 끓읞 닀음 반복 ì ‘ê·Œ 방식윌로 번역/변환할 수 있닀고 생각합니닀. 귞늬고 예, 방묞 혞출의 set 륌 유지하여 룚핑을 방지할 수 있습니닀. 읎는 핎결하Ʞ 쉬욎 ìž¡ë©Ž 쀑 하나읞 것 같습니닀.

재귀적 ì ‘ê·Œ 방식을 반복적 ì ‘ê·Œ 방식윌로 변환하는 방법에 대핮 조ꞈ 더 삎펎볎고 생각했습니닀. @xoviat 의 PEP 518(PR #4799) 부분 작업은 재귀의 요점을 찟는 데 도움읎 되었습니닀(음부는 읎믞 알고 있을 것입니닀). 귞의 윔드 죌석에 있습니닀.

# TODO: Use single process with recursion handling

여Ʞ서 pip install ... 륌 혞출합니닀.

낮 생각은 닀음곌 같은 변겜윌로 pip install (빌드 종속성용)의 변형윌로 í•Žê²°í•  수 있을 것 같습니닀.

  • 섀치에 하위 섀치가 필요하지 않은 겜우 섀치륌 수행하십시였.
  • 귞렇지 않윌멎 필요한 하위 섀치 목록(부분적음 수 있음)곌 핚께 반환합니닀(예: stdout에 쓰는 것읎 아직 작동하지 않는 겜우 동의한 파음에 정볎륌 Ʞ록).

읎러한 방식윌로 최상위 룚튞 프로섞슀는 빌드 종속성의 튞늬륌 점진적윌로 생성할 수 있습니닀. 귞늬고 잎읎 발견되는 대로 처늬할 수 있습니닀. 잎읎 처늬되멎 읎전에 잎읎 아니었던 녞드가 잎읎 되는 식입니닀. 읎 구현을 사용하멎 얞제든지 하위 프로섞슀에서 최대 한 번의 pip-install만 발생합니닀.

위에서 제안한 것의 앜간의 변형은 필요한 pip 명령/하위 프로섞슀 혞출읎 후볎 섀치에 필요한 하위 섀치 혞출 목록을 반환/낎볎낌 수 있닀는 것입니닀( pip get-subinstalls 또는 닚순히 pip subinstalls 명령). 위에서 제안한 것곌의 유음한 찚읎점은 읎 명령읎 볎고 정볎로 제한된닀는 것입니닀. 싀제로 섀치륌 수행하지 않습니닀. 따띌서 구현하는 것읎 더 간닚하고 테슀튞하Ʞ 쉬욞 수 있습니닀.

@cjerdonek 나는 ê·ž 아읎디얎에 아묎런 묞제가 없닀고 뎅니닀. 귞러나 궁극적윌로 누군가가 귞것을 구현핎알 하며(낮 생각에 @pradyunsg 가 읎번 죌말에 작업을 할 것읎띌고 생각합니까?) 항상 귞렇듯읎 더 많은 얎렀움읎 발견될 수 있습니닀.

뭔가 올띌왔습니닀. 닀륞 사람읎 읎것을 데늬러 가고 싶닀멎 나는 없닀.
묞제. :)

나는 또한 @dstufft 의 아읎디얎륌 좋아합니닀.

2017년 10월 29음 음요음 08:47 xoviat, [email protected] 에서 닀음곌 같읎 썌습니닀.

@cjerdonek https://github.com/cjerdonek 나는 묞제가 없닀고 뎅니닀.
ê·ž 생각. 귞러나 궁극적윌로 누군가가 귞것을 구현핎알한닀고 생각합니닀.
@pradyunsg https://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

예, 부탁합니닀. 읎것을 앞윌로 나아가Ʞ 위핎 묎엇읎든.

pip 10 늎늬슀와 ꎀ렚하여 PEP 517 및 PEP 518의 입장을 요앜할 수 있는 사람읎 있습니까? 구첎적윌로:

  1. 마슀터가 현재 í•Žì œ 가능한 상태입니까? 마지막윌로 PEP 518 지원읎 쀑닚되었닀고 듀었습니닀(PEP 518 - #4647곌 ꎀ렚된 늎늬슀 ì°šë‹š 묞제가 하나 읎상 ì—Žë € 있음).
  2. PEP 517 및/또는 PEP 518을 사용할 수 있을 때까지 pip 10을 지연시킀는 것읎 합당한 시간 닚위로 작동할 가능성읎 있습니까?
  3. (1)의 낎용을 수정했닀고 가정하고 PEP 517/518 없읎 pip 10 늎늬슀륌 하시겠습니까? 출시에 대한 헀드업 읎메음을 제작하여 사람듀읎 출시가 임박했음을 알렞습니닀. 귞늬고 거Ʞ에는 늎늬슀하Ʞ 좋은 몇 가지 합늬적윌로 쀑요한 수정 사항(예: Windows용 읞윔딩 수정 사항)읎 있습니닀.

낮 느낌은 우늬가 늎늬슀 찚닚Ʞ륌 Ʞ닀늬고 있지만 PEP 517/518 지원에 가까워서 pip 10을 ì°šë‹ší•  수 없닀는 것입니닀. 귞러나 PEP 518 구현의 음부륌 제왞하고 는 아묎도 #4647에서 작업하고 있닀고 생각하지 않습니닀.

한 가지 대안은 현재 PEP 518 지원의 제한 사항을 묞서화하고 #4647을 늎늬슀 찚닚에서 닀욎귞레읎드하는 것입니닀. 나는 귞것읎 싀행 가능한지 알Ʞ 위핎 사용 사례에 대핮 충분히 알지 못합니닀.

방ꞈ 읎 토론을 볎았습니닀. 포크 폭탄처럌 작동하Ʞ 쉬욎 반쯀 구욎 쎈Ʞ 구현에 대핮 사곌하고 시간을 ë‚Žì–Ž 읎륌 읎핎하고 더 나은 아읎디얎륌 생각핎 낾 몚든 분듀께 감사드늜니닀.

FWIW, 빌드 요구 사항을 위핎 바퀎륌 섀치하는 것윌로 제한하는 것읎 첫 번짞 버전에 대핮 수용 가능한 절충안읎 될 것읎띌고 생각합니닀.

읎것은 또한 flit 자첎가 빌드 요구 사항읎 아니도록 묞제륌 수정핎알 핚을 상Ʞ시킵니닀.

포크 폭탄처럌 작동하Ʞ 쉬욎 반쯀 구욎 쎈Ʞ 구현에 대핮 사곌합니닀.

사곌는 필요 없습니닀. ë‚Žê°€ 말했듯읎 첫 번짞 시도에서 읎러한 묞제륌 예잡할 수 없습니닀. 우늬가 지ꞈ 알고 있는 것을 알멎서도 PR을 믞룚멎 읎러한 녌의가 믞뀄졌을 것입니닀.

마슀터가 현재 í•Žì œ 가능한 상태입니까?

IIUC, 현재로서는 시슀템에 폭탄을 던질 수 있습니닀. ê·ž 맞습니까? 귞렇닀멎 귞렇지 않닀고 생각합니닀.

PEP 517 및/또는 PEP 518을 사용할 수 있을 때까지 pip 10을 지연시킀는 것읎 합당한 시간 닚위로 작동할 가능성읎 있습니까?

낮 생각에 쉬욎 (ë‹šêž°) 솔룚션은 빌드 종속성을 위핎 바퀎로 제한하는 것입니닀. 닀음죌에 한번 핎볎렀고 합니닀. 귞것읎 싀현되지 않는닀멎 마슀터에서 현재 PEP 518 지원을 제거하고 10.0.0을 잘띌도 ꎜ찮을 것입니닀.

PEP 518 구현의 음부륌 제왞하고는 아묎도 #4647에서 작업하고 있닀고 생각하지 않습니닀.

소슀 빌드 종속성읎 허용된 PEP 518의 완전한 구현을 의믞합니까?

아, 귞늬고 #4647에 대핮 -- 위의 @xoviat 의 섀명에 따륎멎 수정하렀멎 윔드 변겜/읎동 및 개첎의 소유권/가시성(특히 BuildEnvironment )읎 필요하며 읎는 사소한 음읎 아닙니닀.

나는 귞것을 바퀎로 제한하는 것읎 닀음 쀄을 변겜하는 것처럌 ê°„ë‹ší•Žì•Œ 한닀고 생각합니닀.

https://github.com/pypa/pip/blob/fc6b2c192088737f81259b6446f627f20ce46443/src/pip/_internal/wheel.py#L696

에게:

finder.format_control = FormatControl(set(), set([':all:']))

두 번짞 필드에는 바읎너늬로만 찟을 수 있는 팚킀지 섞튞가 있윌며 ':all:' 는 몚든 팚킀지륌 의믞하는 특별한 겜우가 있습니닀.

예. 하지만 귞것만윌로는 #4647을 í•Žê²°í•  수 없습니닀. 또한읎 윔드 쀑 얎느 것도 가지 않습니닀.
핎결사륌 통핎.

2017년 12월 2음 토요음 01:23 Thomas Kluyver [email protected] 에서 닀음곌 같읎 썌습니닀.

읎것을 바퀎로 제한하는 것은 읎것을 변겜하는 것만 큌 간닚핎알한닀고 생각합니닀.
띌읞:

https://github.com/pypa/pip/blob/fc6b2c192088737f81259b6446f627f20ce46443/src/pip/_internal/wheel.py#L696

에게:

finder.format_control = FormatControl(set(), set([':all:']))

두 번짞 필드에는 바읎너늬로만 찟을 수 있는 팚킀지 섞튞가 있습니닀.
몚든 팚킀지륌 의믞하는 ':all:'의 특별한 겜우.

—
당신읎 얞꞉되었Ʞ 때묞에 읎것을 받는 것입니닀.

읎 읎메음에 직접 답장하고 GitHub에서 확읞하섞요.
https://github.com/pypa/pip/issues/4802#issuecomment-348598368 또는 음소거
슀레드
https://github.com/notifications/unsubscribe-auth/ADH7SUi0QMS3rr5Iba90XWZmFweGmqeBks5s8FlEgaJpZM4QBdSg
.

맞아요, 닀륞 묞제가 많읎 있습니닀. 귞러나 귞것은 가장 시꞉한 ꎀ심사띌고 생각하는 포크 ​​폭탄 테러륌 방지핎알 합니닀.

누군가가 낮 원래 PR을 읞수하렀는 겜우("PEP 518 묞제 수정"),
빌드 격늬가 되지 않도록 변겜하는 것읎 얎렵지 ì•Šì•„ì•Œ 합니닀.
pyproject.toml 없읎 활성화됩니닀. 병합되지 않은 원래 읎유
소슀에서 종속성을 섀치하는 지원을 쀑닚했닀는 것입니닀.
PEP 518. 귞러나 읎제 사람듀은 PEP 518읎
pip 10에 전혀 포핚되지 않은 겜우 핎당 PR을 더 잘 수용할 수 있습니닀. 나
개읞적윌로 귞것을 옹혞할 시간읎 없지만 닀륞 사람듀을 막을 수는 없습니닀.
몇 쀄만 변겜하멎 되므로
(PEP 518 테슀튞에 싀팚하는 것을 제왞하고).

사싀, 더 나은 판닚에 반하여 pip 개발자가 낮 조걎에 동의한닀멎 곧 PEP 517곌 518을 몚두 구현할 용의가 있습니닀.

  1. 종속성은 처음에 바퀎에서만 발생합니닀.
  2. pip는 ê²°êµ­ 제거되지만 쎈Ʞ에는 낎부 빌드 백엔드가 있습니닀.

1에 묞제가 없습니닀. 나는 2에 ​​대핮 얎느 쪜읎든 선혞하지 않습니닀.

2017년 12월 3음 음요음 02:36 xoviat [email protected] 에서 닀음곌 같읎 썌습니닀.

사싀, 더 나은 판닚에 반핮 나는 두 PEP륌 몚두 구현할 용의가 있습니닀.
pip 개발자가 낮 조걎에 동의하멎 곧 517 및 518:

  1. 종속성은 처음에 바퀎에서만 발생합니닀.
  2. 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, [email protected] 에서 닀음곌 같읎 썌습니닀.

제안의 얎조는 방법읎 있Ʞ 때묞에 있는 귞대로입니닀.
에 대한 귌볞적읞 불음치로 읞핎 구현읎 쀑닚되었습니닀.
쎈Ʞ 구현은 닀음곌 같습니닀. 나는 찚띌늬 동의한닀.
원칙은 읎제 닀륞 구현 토론윌로 넘얎갑니닀.

—
당신읎 얞꞉되었Ʞ 때묞에 읎것을 받는 것입니닀.

읎 읎메음에 직접 답장하고 GitHub에서 확읞하섞요.
https://github.com/pypa/pip/issues/4802#issuecomment-348802032 또는 음소거
슀레드
https://github.com/notifications/unsubscribe-auth/ADH7ScUh-BveonoTxZ5FkkeSynFvoLb8ks5s8uNRgaJpZM4QBdSg
.

솔직히 말핎서, 읎것은 pip 10에 읎러한 Ʞ능을 포핚하는 것곌 ꎀ렚읎 없Ʞ 때묞에 게시묌의 얎조에 대핮 더 녌의하Ʞ 위핎 닀륞 사람의 시간을 횚곌적윌로 사용하지 않을 수 있습니닀. 귞러나 낮 조걎읎 @pfmoore ( 아묎도 여Ʞ에 시간을 지불하지 않는닀는 점을 감안할 때 귞러한 볎슝을 할 수 없닀고 표시한 사람), @dstufft 또는 @xavfernandez.

닀시 말하지만 조걎은 제 개읞적읞 의견읎 아니띌 구현 쀑심입니닀. 읎러한 조걎을 완화하멎 구현을 앜속할 수 없윌므로 PR을 쀀비하는 데 시간을 할애하고 사람듀읎 diff륌 읜고 "였, 읎 쀄읎 왜 여Ʞ에 있습니까?"띌고 묻는 의믞가 없습니닀. 귞런 닀음 "였, 병합할 수 없습니까?" PR의 목적읎 정확히 묎엇읞지에 대한 였핎가 있었Ʞ 때묞입니닀.

닀시 톀에 동의했습니닀. 낮 요점은 닚순히 변겜 사항[1]을 병합하지 않을 것읎므로 여Ʞ서 낮 견핎는 귞닀지 쀑요하지 않습니닀.

[1] 분명히, 나는 구현을 볎지 않고 말하는 것읎므로 낮 읎유가 윔드 품질에 대한 우렀와 ꎀ렚읎 없닀는 것읎 분명하Ʞ륌 바랍니닀. 윔드륌 충분히 읎핎했는지 확읞할 시간읎 없Ʞ 때묞입니닀. Ʞ볞적윌로 병합할 의사가 있습니닀.

@xoviat 위에서 녌의한 반복적 ì ‘ê·Œ 방식곌 재귀적 ì ‘ê·Œ 방식에 대한 구현 계획은 묎엇입니까?

또한 명확히 하Ʞ 위핎 병합할 수 있는 PEP 517 및 518의 부분 구현을 뚌저 완료한 닀음 병합할 수 있는 전첎 구현을 완료한닀는 말씀읎십니까? 아니멎 부분적읞 구현만 하겠닀고 말씀하시는 걎가요, 아니멎 병합읎 불가능할 수도 있는 쎈Ʞ 닚계륌 통핎 전첎 구현을 하겠닀고 말씀하시는 걎가요? (나는 부분적윌로 귀하의 의견 에서 "처음에"와 "ê²°êµ­"읎 의믞하는 바륌 더 잘 읎핎하렀고 녞력하고 있습니닀.)

첫 번짞 조걎은 전첎 재귀 묞제륌 제거합니닀.

또한 명확히 하Ʞ 위핎 병합할 수 있는 PEP 517 및 518의 부분 구현을 뚌저 완료한 닀음 병합할 수 있는 전첎 구현을 완료한닀는 말씀읎십니까?

ë‚Žê°€ 말하고자 하는 것은 부분 구현을 완료할 것읎띌는 것입니닀. 읎것은 사용 사례의 95%에서 작동합니닀. 특히 종속성에 바퀎가 있고(지ꞈ은 맀우 음반적임) 많은 Linux/windows/OSX 플랫폌(대닀수 사용자)에 있는 겜우에 귞렇습니닀.

완전한 구현은 아닙니닀. 귞러나 병합 불가능한 PR을 얻는 방법은 표쀀을 쀀수하거나 쀀수하지 않는 "전부 아니멎 전묎" ì ‘ê·Œ 방식을 시도하는 것입니닀.

전첎 구현 에는 각각 별도의 PR읎 필요한 상당히 불쟌한 묞제륌 정렬핎알 한닀는 점을 엌두에 두십시였. [1]

[1] https://github.com/btc1/bitcoin/pull/11#issuecomment -313843216

읎제 읎 묞제륌 닫겠습니닀. 빌드 종속성윌로 휠만 지원하는 pip 10의 PEP 518에 대한 예비 지원읎 있습니닀. 완전한 지원에 대핮 녌의하Ʞ 위한 새로욎 묞제와 PEP 517 지원에 대한 또 닀륞 묞제륌 엎겠습니닀(ꎀ렚된 겜우 여Ʞ에서 읞용).

통찰력곌 도움을 죌신 @ncoghlan @rgommers @cjerdonek 에게 감사드늜니닀. PEP 518의 쎈Ʞ 구현에 대핮 @takluyver 에게 감사합니닀. 읎러한 변겜을 구현하는 데 도움을 쀀 @xoviat (현재 @ghost 가 됚)에게 감사합니닀. 현재 지원을 개선하는 데 도움을 죌신 @benoit-pierre에게 감사드늜니닀.

추신: 100번짞 댓Ꞁ! :ë”°ë‹€:

읎 슀레드는 닫힌 후 최귌 활동읎 없었Ʞ 때묞에 자동윌로 잠게습니닀. ꎀ렚 버귞에 대한 새 묞제륌 여십시였.

읎 페읎지가 도움읎 되었나요?
0 / 5 - 0 등꞉