Pip: ツリヌ倖ビルドに関連する問題の解決

䜜成日 2020幎01月04日  Â·  68コメント  Â·  ゜ヌス: pypa/pip

この問題は、ツリヌ倖のビルド、関連する問題、および考えられる解決策に関する議論を統合する詊みずしお開きたす。

この機胜が解決する問題は䜕ですか

ロヌカルディレクトリからプロゞェクトをビルドする堎合、pipは最初にそれらを䞀時的な堎所にコピヌしたす。

このアプロヌチは、時間の経過ずずもに倚くの問題を匕き起こしたした。

  • setup.py / pyproject.tomlがプロゞェクトのルヌトになく、ビルドがsetup.py / pyproject.tomlサブツリヌ3500、7549、6276の倖郚のリ゜ヌスに䟝存しおいる堎合。䟋

    • ビルドには、サブツリヌ倖のファむル/ディレクトリぞのシンボリックリンクであるリ゜ヌスが必芁です

    • ビルドにはgitリポゞトリが必芁でありたずえば、setuptools_scmを䜿甚する堎合、. git /は芪ディレクトリにあり、pipによっお䞀時ディレクトリにコピヌされたせん。

    • ビルドはサブディレクトリ名に䟝存したす倚少゚キゟチックかもしれたせんが、カスタムビルドバック゚ンドを䜜成したい堎合など、メタデヌタの䞀郚はサブディレクトリ名に䟝存したす

  • プロゞェクトディレクトリが倧きい堎合のパフォヌマンスの問題2195。

ビルドする前にpipが䞀時ディレクトリにコピヌするのはなぜですか 譊告これは私にはわかりたせん-これたでに収集したものは次のずおりです

  • ゜ヌス倖のものに䟝存するこずを避けるためhttps://github.com/pypa/pip/issues/2195#issuecomment-524606986-「゜ヌス倖」の定矩が䞊蚘のいく぀かの問題の原因ですが
  • ビルドアヌティファクトたたは残基で゜ヌスディレクトリを汚染しないようにするため
  • 他に䜕かありたすか

可胜な解決策

  1. sdistを所定の䜍眮に構築し、䞀時的な堎所でsdistを開梱しお、そこから構築したす。
  2. 所定の堎所に構築するためのpipオプションを远加したす。
  3. むンプレヌスビルドで「安党」な堎合にバック゚ンドがフロント゚ンドず通信できるように、䜕らかのメカニズムでPEP517を曎新したす。
  4. ピップを倉曎しお、垞に所定の䜍眮に構築したす。
  5. ツリヌ倖でビルドするオプションを䜿甚しお、デフォルトでpipをむンプレヌスでビルドするように倉曎したす。

远加のコンテキスト

sdistを介したビルドに関する詳现に぀いおは、

needs discussion

最も参考になるコメント

https://github.com/pypa/pip/issues/2195#issuecomment -664728481から来おい--use-feature=in-tree-build埌ろで7882をやり盎しおよかったず蚀えたす。

党おのコメント68件

これをバック゚ンドの芳点から芋るず、「ツリヌ倖のビルド」ずいう考えは実際には無意味です。 バック゚ンドには、プロセスの珟圚のディレクトリの圢匏で「゜ヌスツリヌ」が䞎えられ、ビルドを実行するように求められたす。 そのディレクトリがsdistから抜出されたのか、VCSからチェックアりトされたのか、他の堎所からコピヌされたのかを知る方法はありたせん。 実行できるのはビルドだけです。ビルドに必芁なものがない堎合は、倱敗を報告しおください。

そのため、考えられる解決策はほずんどありたせん3IMO-バック゚ンドにはむンプレヌスビルドずは䜕かずいう抂念がないため、そのようなビルドが安党かどうかはわかりたせん1 。

2に関しおは、私は䞀般的にこのような远加のオプションに反察しおいたす。 最善の方法がわかっおいる堎合はそれを行う必芁がありたす。そうでない堎合は、問題をナヌザヌに枡すこずは特にフレンドリヌなオプションではありたせん。 ここでの問題は非垞に埮劙なので、正しい遞択が䜕であるかを知っおいるナヌザヌはほずんどいないず思いたす。そのため、2぀のオプションを詊し、盲目的に「機胜するものは䜕でも」を䜿甚しおいるナヌザヌがいる可胜性がありたす。 たた、サポヌトぞの圱響は重芁です。オプションを提䟛するこずは、ビルド結果が少なくずもいく぀かのケヌスで異なるこずを期埅しおいるこずを明確に意味したす。それでは、違いが期埅どおりであるこずをどのようにテストしたすか むンプレヌスビルドフラグが必芁になるかどうかに぀いおナヌザヌを教育する責任がありたすかドキュメントを介しお、たたはどちらを䜿甚するかわからないナヌザヌによっお提起された問題の結果ずしお

そうは蚀っおも、私はピップを単に適切な堎所に構築するこずに反察しおいたせん。 私たちがそうしない理由は、前のビルドから残ったアヌティファクトが次のビルドで䜿甚されたが、異なるオプションでビルドされた堎合があるためだず思いたすたずえば、デバッグモヌドでビルドされたオブゞェクトファむルがリリヌスビルドにリンクされおいる同じツリヌから実行されたす。 ただし、バック゚ンドはこのような問題が発生しないようにする必芁があるず蚀うのは合理的です。発生した堎合、それはバック゚ンドのバグであり、それを防埡しようずするのはピップではありたせん。 ただし、そのようなスタンスをずるこずが特にナヌザヌフレンドリヌであるかどうかはわかりたせん。これは、むンクリメンタルビルドのトピックに関するPEP 517の議論䞭に出おきたものであり、圓時は延期されるほど物議を醞しおいたした。

私の奜みは、長い間、sdistを䜜成し、それからホむヌルを䜜成するこずでしたオプション1。 ピップの構築は問題ありたせんが䞊蚘のように、バック゚ンドからの通知は期埅できないため、安党であるこずに同意できる堎合、コミュニティが必芁になるず思いたす。より広い意味バック゚ンド、pip /フロント゚ンド、゚ンドナヌザヌを打ち砕くための議論。

1もちろん、PEP 517を曎新しお、「アりトオブツリヌ」ビルドではなく「むンプレヌス」゜ヌスツリヌを構成するものを

゜リュヌション4.pipを垞にむンプレヌスでビルドするように倉曎および5.pipをデフォルトでむンプレヌスでビルドするように倉曎し、ツリヌ倖でビルドするオプションを远加を远加したした。

次の理由で、sdist゜リュヌション1を介した構築に関する感情が混ざり合っおいたす。

  1. 䞀郚のプロゞェクトでは、sdistからwheelぞのパスが壊れおいる可胜性がありたす。 sdistsからのビルドが機胜するこずを怜蚌するこずの䟡倀はわかりたすが、デフォルトで実行するず、倚くの゚ンドナヌザヌビルドが確実に壊れたす。
  2. 倧芏暡なsdistを䜿甚するプロゞェクトや、远加のサブプロセス呌び出しにより、パフォヌマンスに圱響がありたす。
  3. プロゞェクトがビルドされたアヌティファクトを公開し、゜ヌスリリヌスのお気に入りのコヌドホスティングプラットフォヌムを参照するこずは非垞に䞀般的であるため、個人的にはsdistsにあたり重点を眮くべきではないず思いたすたずえば、VCSチェックアりトの存圚に䟝存するバック゚ンド建物は、動䜜するsdistを生成するためにフヌプをゞャンプする必芁がありたす。 たた、PEP 517では、バック゚ンドがUnsupportedOperationに察しおbuild_sdist UnsupportedOperationを調達できるようになっおいたす。

ディスカッションに関するこの

私は、解決策3の道筋が明癜ずはほど遠いこずに同意したす。

たた、可胜であれば、远加のオプションを避けるべきであるこずに同意したす。

たた、リンクされたディスカッションスレッドでむンプレヌスビルドを支持する声がいく぀かあったこずにも泚意したすが、そのアプロヌチを怜蚎する堎合は、その特定の䞻題に焊点を圓おたコミュニティディスカッションが必芁です。

  • sdistを所定の䜍眮に構築し、䞀時的な堎所でsdistを開梱しお、そこから構築したす。

これは良いアプロヌチだず思いたす。

IMOの可胜性は、これはロヌカルディレクトリを含むほずんどのpip install実行で単䞀のパッケヌゞに察しお実行されるこずです-最も䞀般的にはpip install .を想像したす。 これは、パッケヌゞ開発ワヌクフロヌの䞀郚ずしお行われる可胜性がありたす。

この動䜜は次のようになりたす。

  • バック゚ンドがsdistを䜜成できない堎合は、local-dir-> Wheelむンプレヌスを実行したす

    • この堎合、local-dir-> Wheelがべき等操䜜であるこずを確認する責任は、バック゚ンドにあるず思いたす。

  • バック゚ンドがsdistを䜜成できる堎合は、local-dir-> sdist-> unpacked-sdist-> wheelを実行したす。

local-dir-> sdist-> Wheelを実行するず、远加の呌び出しセットがありたす。 ただし、特に開発䞭に、生成されたsdistが正垞であるこずを怜蚌するこずは合理的だず思いたす。 toxはすでにワヌクフロヌの䞀郚ずしおこれを行っおいたす。ここで、setuptoolsのあたり䜿いにくいむンタヌフェヌスをカバヌするマニフェストを確認しおください。

党䜓ずしお、ロヌカルディレクトリを指定した堎合のsdistの構築コストは、プロゞェクトでのこのような゚ラヌを防ぐのに十分な䟡倀があるず思いたす。特に、ロヌカルディレクトリからむンストヌルする人は、プロゞェクト自䜓の開発者である可胜性が高いためです。

展開に関しおは、6536がどのように発生するかを埅ちたいず思いたす。 転送できるいく぀かのこずを確実に孊びたす。

sdistを構築しお解凍し、むンストヌルするよりも、sdistを䜿甚せずにむンプレヌスでビルド/むンストヌルする぀たり、 setup.py installたたはsetup.py bdist_wheelたたはPEP 517バック゚ンドでbuild_wheelを呌び出す方が奜きです。それから。 私の具䜓的な理由は次のずおりです。

  1. 箱から出しお最倧数のナヌザヌをサポヌトしたす。

    1. pipがlocal-dir->むンストヌルされおいるず仮定したすホむヌルビルドむンプレヌスたたはsetup.py install介しお。 local-dir-> installedから移動したいナヌザヌはpip install local-dir実行できたす。 local-dir-> sdist-> installから移動したいナヌザヌは、自由にsdistを䜜成しおから、 pip install ./path/to/sdist実行できたす。 sdistを構築できる代替ツヌルはたくさんありたす。これは、PyPIにアップロヌドするディストリビュヌションを手䜜りしない限り、ナヌザヌがすでに持っおいる可胜性が高いものです。

    2. ここで、pipがlocal-dir-> sdist-> installedを実行するず仮定したす。 local-dir->むンストヌル枈みから移動したいナヌザヌには、pipを含むオプションはありたせん。 local-dir-> sdist-> installから移動したいナヌザヌは、 pip install local-dir実行できたす。 オプションのないナヌザヌは、動䜜を制埡するためのオプションをpipに芁求するか、他の方法では必芁のない別のツヌルを芋぀ける必芁がありたす。

  2. local-dir-> sdist-> installedを実装する堎合、おそらく、VCSベヌスの芁件に察しおも実装したすか もしそうなら、それはより倚くの仕事です。 そうでない堎合、それはコヌドを介した远加のパスであり、むンストヌルの凊理方法における逞脱であり、ナヌザヌが芚えおおく必芁があるか、サポヌトを提䟛するずきに芚えおおく必芁がありたす。
  3. 実装する䜜業の量が最も少ない。 local-dirを実装するために倉曎する堎所は3぀ありたす->むンストヌル枈みここ、ここ、およびここ。 local-dir-> sdist->むンストヌル枈みの堎合、6607が完了するたで、これの実装に觊れたくありたせん。そうしないず、アヌティファクトのダりンロヌド/ハッシュチェックず同様に、コヌドベヌスの倚くの堎所で終了するず思いたす。
  4. ロヌカルディレクトリ->むンストヌルされたコヌドパスをカバヌするには、IMOの既存のテストで十分なので、テストする䜜業量は最小限です。 local-dir-> sdist->むンストヌル枈みパスの堎合、実際にsdistを構築しおいるこず、およびフォヌルバックがホむヌルを盎接構築するために機胜するこずを確認する必芁がありたす。
  5. 最小の䜜業量蚈算䞊。 他の堎所で述べたように、local-dir-> sdist-> installedは远加のサブプロセス呌び出しですそしおそのサブプロセスは䜜業を行っおいたす。 たた、ホむヌルビルドを実行する前に、pipがsdisthelloりむルススキャナヌやその他の䜎速ディスクを解凍する必芁があるこずも意味したす。

アプロヌチに関係なく、むンプレヌスで行うこずで私が目にする唯䞀の問題は、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を介しおむンストヌルするシェルスクリプトがありたす。 機械はすべおが䜜業ツリヌ内に構築されるこずを期埅しおおり、倖郚に構築された堎合は実際にはうたく機胜したせん。 これが私たちの偎の問題を軜枛するために䞀緒にできるこずです

  1. $TMPDIR環境倉数を蚭定しお、RPMスクリプトが予期する堎所に配眮したす぀たり、 export TMPDIR=%{_builddir}/.tmp および䜜成
  2. pip wheelを--no-cleanオプションずずもに䜿甚しお、コピヌされた゜ヌスを$TMPDIR
  3. シェルカンフヌを実行しお、「゜ヌスは䜕ですか」ずいう情報を正しい堎所に曞き換えたす 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. オプション $TMPDIR手動でクリヌンアップしたす。

3番目のステップは、実装の詳现が倚すぎるため、特に奜きではありたせん。

  • /usr/lib/rpm/debugedit APIず堎所および存圚
  • pip-req-build名前
  • pipが゜ヌスを構築するメカニズム

pipが垞に適切に構築される堎合、たたはこのためのコマンドラむンスむッチがある堎合、問題は解消されたす。

ダりンストリヌムレポヌト https 

sdistビルドをスキップしおツリヌ内ビルドを盎接実行するずいうアむデアは、デフォルトでpipが採甚するより良いアプロヌチであり、local-dir-> sdist-> wheelを実行しようずしないこずに同意するようになりたした。

たた、むンプレヌスホむヌルビルドを行うずいうアむデアを受け入れる傟向が匷たっおいたす。 私の残りの予玄は次のずおりです。

  1. バック゚ンドが「正しく」動䜜するこずに䟝存したす。たずえば、以前のビルドの残りのデヌタに基づいお異なる結果が埗られないなどです。 私はその仮定をするこずは問題ありたせんが、「pipが私のホむヌルを間違っお構築した」ず人々に蚀われ始め、それがバック゚ンドの問題であるこずがわかるだけでデバッグする必芁がある堎合、サポヌトコストが心配です。
  2. どのようなアプロヌチをずる堎合
  3. 䞊蚘の結果ずしお、珟圚の「コピヌアンドビルド」アプロヌチに䟝存しおいるこずがわかっおいるプロゞェクトがないこずを確認する必芁がありたす。この倉曎でプロゞェクトを壊すかのように。

...そしおもちろん誰かがこの倉曎を実装するPRを曞く必芁がありたすテスト、ドキュメントなど-通垞のものでそうでなければ私たちがしおいるのは話しおいるだけです🙂

バック゚ンドが「正しく」動䜜するこずに䟝存したす。たずえば、以前のビルドの残りのデヌタに基づいお異なる結果が埗られないなどです。 私はその仮定をするこずは問題ありたせんが、「pipが私のホむヌルを間違っお構築した」ず人々に蚀われ始め、それがバック゚ンドの問題であるこずがわかるだけでデバッグする必芁がある堎合、サポヌトコストが心配です。

「クリヌンな」フックを含めるようにPEP517むンタヌフェむスを拡匵するこずは理にかなっおいたすか ずにかく、他の詊みを可胜にするためのポむントずしお、おそらくそれが必芁ですたずえば、線集可胜なむンストヌルの実装、PEP 517プロ​​ゞェクトをビルドするパッケヌゞ開発ツヌルのビルド。 pipはここでそれを呌び出しお、ツリヌ内ビルドを実行する前にゞャンクが残っおいないこずを確認できたす。

「クリヌンな」フックを含めるようにPEP517むンタヌフェむスを拡匵するこずは理にかなっおいたすか

倚分 しかし、pipが自動的にclean呌び出す堎合、むンクリメンタルビルドなどを行うためにそうしないこずを望んでいる人が必ずいたす。 そしお、私たちは別のオプションに行き着きたす。

私の傟向は、「むンプレヌスビルドが正しく機胜するこずを保蚌するのはバック゚ンドの責任であるず想定できる必芁がある」ずいう私の立堎に固執するこずです。 それが受け入れられないこずが刀明したずしおも、それが機胜しない理由の具䜓的な䟋を入手するこずは、単に掚枬するのではなく、問題に぀いお䜕をすべきかをよりよく理解するのに圹立ちたす。

  1. バック゚ンドが「正しく」動䜜するこずに䟝存したす。たずえば、以前のビルドの残りのデヌタに基づいお異なる結果が埗られないなどです。

これを明瀺的な芁件にするために、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。 倉化が圌らを助けおいるずはっきりず述べおいる人々もいたした。

  • パフォヌマンスの問題に加えお、以前の動䜜temp dirぞのコピヌには、呌び出し元だけが持っおいるコンテキストの知識がなければpipで修正できない䞊蚘のリンク先の正確性の問題がありたした補足ずしお、コピヌツリヌコヌドはすでにいっぱいでした奇劙な状況に察凊するためのバンド゚むド-ツリヌのtmpdir、゜ケットなど。
  • 以前の動䜜をアクティブにするオプションには、䟝然ずしお正確性ずパフォヌマンスの問題がありたす。
  • 正しい解決策には、珟圚完党には存圚しないビルドディレクトリを制埡するためのビルドバック゚ンドサポヌトが含たれたすたずえば、setuptools bdist_wheelは--bdist-dirがありたすが、それでも.egg-infoを曞き蟌みたす堎所に぀いおは、https//github.com/pypa/setuptools/issues/1816、https//github.com/pypa/setuptools/issues/1825も参照しおください。 したがっお、pipが正しく動䜜するようになったので、たずえば、setuptoolsが゜ヌスディレクトリに觊れずにビルドを実行するオプションを進化させお、そのオプションを制埡するためにPEP 517の倉曎が必芁かどうかを確認するために、議論を倉えるこずができたす。
  • それたでの間、報告された問題は、呌び出し元が比范的簡単に回避できる可胜性がありたすたずえば、䞀時ディレクトリに自分自身をコピヌしたり、コンテキストを完党に理解しおいれば正しく実行できる䞀時的なtarballを䜜成したりできたす。
  • 最埌に、私たちが持っおいるデヌタで確実に刀断するのは難しいですが、私の盎感では、この倉曎は、それが痛いよりも倚くの人々を助けるずいうこずです。

だから私は壊れるような倉曎は嫌いですが、これは軜く行われおいなかったので、私は個人的にそれを維持する傟向がありたす。

私は、新しい振る舞いがピップの振る舞いが「正しく」、確かに異なっおおり、明らかに堎合によっおは異なっお壊れおいるこずに同意したせん。そのようにフレヌミングするこずは正しくないず思いたす。 これは、壊れたナヌザヌの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は倧䞈倫そうです。

8165コメント

これで、私はこの倉曎を元に戻すべきであるこずに同意しおいるず思いたす。

新しい問題は予想よりはるかに倧きいず思いたす。 おそらく、元に戻すための簡単な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になり、ナヌザヌの吊定的なコメントを読んでも、確かに圹に立ちたせんでした。

こんにちは皆さん、私はこれに぀いおもう少し考えたした。これがこの問題に関する私の珟圚の芋解です。

  1. sdistを所定の䜍眮に構築し、䞀時的な堎所でsdistを開梱しお、そこから構築したす。

私はただピップむンストヌル/ピップホむヌルは悪いsdistsを捕たえるのに適切な堎所ではないず信じおいたす。 そもそも悪いsdistsを䜜成しないずいうバック゚ンドの責任ではないでしょうか さらに、sdistを介した無条件のビルドは、適切なビルドず同じくらい砎壊的だず思いたす。

  1. 所定の堎所に構築するためのpipオプションを远加したす。

解決策4がうたくいかなかったので、私が最も短期的に奜きなもの。 それをpip20.1.1に远加するのは時期尚早ですか

  1. むンプレヌスビルドで「安党」な堎合にバック゚ンドがフロント゚ンドず通信できるように、䜕らかのメカニズムでPEP517を曎新したす。

このピップでは、壊れた修正䞍可胜なコピヌツリヌにフォヌルバックする必芁があるので、私はこれに賛成したせん。

  1. ピップを倉曎しお、垞に所定の䜍眮に構築したす。

したがっお、これは砎壊的すぎるず芋なされ、20.1.1で元に戻したす。

  1. ツリヌ倖でビルドするオプションを䜿甚しお、デフォルトでpipをむンプレヌスでビルドするように倉曎したす。

それは長期的な目暙であり、キャッシュディレクトリの抂念ずツリヌ倖のブレンドを構築するオプションである可胜性がありたすか

私はCLIオプション、特にこのようなオプションは本圓に奜きではありたせん。 ロヌカルFSにある2぀のパッケヌゞをリストし、1぀をむンプレヌスでビルドする必芁があり、もう1぀をビルドする必芁がない堎合はどうなりたすか どちらか䞀方を実行するオプションを提䟛するず、どちらか䞀方でしかビルドできない既存のパッケヌゞになっおしたいたす。

たた、プロゞェクトが決定を䞋すこずができず、その決定を゚ンドナヌザヌにプッシュするこずを決定したために完党に存圚する皮類のオプションのような匂いもしたす。

sdistを介しお構築するこずは、悪いsdistを捕たえるこずだけではありたせん。 倧郚分は、プロゞェクトがむンストヌルされる前に通過できる「パス」の可胜なバリ゚ヌションを枛らすこずです。 いく぀かの方法でフラグを远加するず、その問題は悪化したすが、良くなるこずはありたせん。

぀たり、むンストヌルが通過できる「パス」がいく぀かありたす。

  1. VCS-> Sdist->ホむヌル->むンストヌル枈み
  2. VCS->ホむヌル->むンストヌル枈み
  3. VCS->むンストヌル枈みレガシヌ

段階的に廃止されおいる远加のパスがいく぀かありたすが、䞀般的には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ぞの入力を歓迎したす。 :)

  1. ピップを倉曎しお、垞に所定の䜍眮に構築したす。

したがっお、これは砎壊的すぎるず芋なされ、20.1.1で元に戻したす。

明確にするために、私たちが「あたりにも早く展開した」こずもあり、私たちが採甚した展開アプロヌチは、これがあたりにも砎壊的であるこずになった理由の䞀郚です。

  1. 所定の堎所に構築するためのpipオプションを远加したす。

@dstufft @pfmooreこの皮のオプションはオプトむンメカニズムであるず考えおいるため、ある時点でデフォルトにするこずを目暙に、ナヌザヌをむンプレヌスビルドに向けお段階的に調敎できたす。 このコメントの粟神で https 

このためのPRを提出したす。 :)

8221です。

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この機胜を

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡