Pip: 代替が実装されるたで、 `--process-dependency-links`の非掚奚を解陀したす

䜜成日 2016幎12月19日  Â·  72コメント  Â·  ゜ヌス: pypa/pip

  • Pipバヌゞョン8.1.1
  • Pythonバヌゞョン3.5.2
  • オペレヌティングシステムUbuntu 16.04

説明

--process-dependency-linksは、フラグの有効なナヌスケヌスが倚数あるため、しばらく前にpipに再床远加されたした https 

このため、PEP 508/440の実装がpipになるたで、おそらく非掚奚ではないはずです。 setuptoolsのsetupに察するdependency_links匕数も文曞化されおおり、非掚奚ではありたせん http //setuptools.readthedocs.io/en/latest/setuptools.html#dependencies -that-aren-t- in-pypi

私が実行したもの

$ pip install request --process-dependency-links
Collecting request
  Downloading request-0.0.12.tar.gz
  DEPRECATION: Dependency Links processing has been deprecated and will be removed in a future release.
... 
awaiting PR auto-locked needs discussion maintenance

最も参考になるコメント

このための適切なワヌクフロヌは䜕ですか

機胜を远加する必芁のあるラむブラリがあるずしたしょう。 Githubでフォヌクしたす。 機胜はすぐにマヌゞされる予定はないので、PyPiの代わりにGithubフォヌクを䜿甚するように蚭定したツヌルがありたす。

これで、pipを䜿甚しおツヌルをむンストヌルするずきに、すべおのナヌザヌが--process-dependency-linksを远加する必芁がありたす。これは非掚奚であり、䞀床削陀されたフラグです。

setup.pyに欠萜しおいるオプションがありたすか、それずもこれを回避する方法が本圓にありたせんか これを行う唯䞀の実行可胜な方法は、フォヌクされたpypiパッケヌゞをプッシュするこずであるように思われたす。 ずにかく、プルリク゚ストがマヌゞされるず、それはナヌザヌの混乱を増すだけです。

党おのコメント72件

同意したした。 䟝存関係リンクのpipの珟圚の動䜜は、本圓にひどいものです。

4295

3610

[3939に曞き蟌み、コメントをここに移動]

したがっお、䞻な問題は次のずおりです。 requirements.txtファむルを䜿甚したくない堎合たずえば、すべおsetup.cfg指定された宣蚀型の䟝存関係が必芁なため、どのように指定する必芁がありたすか䟝存関係ずしおのURL

これは機胜したせん

[options]
install_requires = 
  requests==2.18.4
  https://github.com/example/example_lib/archive/master.zip

たた、䟝存関係のリンクは奇劙で削陀しおも問題ないず思いたすが、暙準的に、これらのナヌスケヌスがない堎合、このナヌスケヌスはどのように提䟛されたすか

もう1぀の問題は、 dependency_linksをsetup.cfgで指定できず、setup.py匕数ずしおのみ指定できるこずです。 それらが非掚奚にならない堎合は、修正する必芁がありたす。

これに関するニュヌスはありたすか 進行䞭の代替手段はありたすか 䟝存関係_links_は、ラむブラリの内郚/プラむベヌト配垃の唯䞀のオプションのようです。

非掚奚にするのではなく、修正する必芁がありたす。倚くの人は、ラむブラリの名前バヌゞョンをinstall_requiresに配眮するこずず、tarbalずeggを含む䟝存関係リンクの䞡方を忘れおいるため、忘れたり混乱したりしたす。 別の方法ずしお、 @ jleclancheが、install_requires内のtarballぞの簡単なリンク卵を指定するこずはオプションである可胜性がありたすを提案しおいるこずを確認したいず

私たちは䞀人ではないず思いたす https 

devpiのような

@dstufft btw-devpiの存圚は、䟝存関係リンクを䞍芁にする問題に察するよりクリヌンな解決策を瀺しおいるず䞻匵したいず思いたす

IMHOむンデックスの継承+ホワむトリスト/ブラックリストは、運甚レベルでより䞀貫性があり、より理解しやすいものです

@RonnyPfannschmidt 、提案に感謝したす。私は重芁な䜕かを芋逃しおいるようですこの非掚奚に぀いおの議論は長すぎたすが、䞀般的に蚀えば、 redditからのこのコメントにこれ以䞊同意するこずはできたせん

devpiは解決策になる可胜性がありたすが、メンテナンスが必芁な別のサヌビスをゲヌムに導入し、管理者がセットアップするのを埅たなければならないので、すぐに䜜業を開始するこずはできたせん。 たた、パッケヌゞをビルドしおからdevipに配眮する必芁がありたすたたはdevpiにgitリポゞトリを远跡する機胜がありたすか??

理想的には、ラむブラリにファむルを远加するか、setup.pyに数行远加するだけの代替手段が必芁です。

私は基本的にそれを削陀するずいう根本的な決定を理解しおいたせん、それがどのように悪い慣行や䞍安に぀ながる可胜性があるかはわかりたすが、それが内郚䜿甚のために保持されおいる限り、それは倧きな問題ではないはずです。

4175は、PEP 508URLサポヌトがpip10にあるこずを意味したす。これは閉じるこずができるず思いたす。

@pfmoore @dstufftを考えたすか

https://github.com/pypa/pip/pull/4175/commits/86b07792e7ae762beeaeb471ab9db87e31bc285dは、 @構文を䟝存関係に䜿甚できないこずを意味しおいるず思ったので、これは4175がこの問題の解決策ではないこずを意味したす。 そこにあるコメントは、PyPIがそれを䜿甚するアップロヌドをブロックできるようになるたで䟝存関係の@サポヌトを実装すべきではないずいうものでしたPyPIから䜕かをむンストヌルしお任意のURLから䜕かを取埗できるようにしたくないため 、おそらく。

代替手段、぀たりPEP 508サポヌトが導入されるたで、非掚奚にしないでください。 それたでは、あたりにも倚くの人が䜿っおいたす。

このための適切なワヌクフロヌは䜕ですか

機胜を远加する必芁のあるラむブラリがあるずしたしょう。 Githubでフォヌクしたす。 機胜はすぐにマヌゞされる予定はないので、PyPiの代わりにGithubフォヌクを䜿甚するように蚭定したツヌルがありたす。

これで、pipを䜿甚しおツヌルをむンストヌルするずきに、すべおのナヌザヌが--process-dependency-linksを远加する必芁がありたす。これは非掚奚であり、䞀床削陀されたフラグです。

setup.pyに欠萜しおいるオプションがありたすか、それずもこれを回避する方法が本圓にありたせんか これを行う唯䞀の実行可胜な方法は、フォヌクされたpypiパッケヌゞをプッシュするこずであるように思われたす。 ずにかく、プルリク゚ストがマヌゞされるず、それはナヌザヌの混乱を増すだけです。

これに来おみたしょう。

--process-dependency-linksは、今日、実際には代替手段がありたせん。 したがっお、先に進んで非掚奚にするこずをお勧めしたす。

ただし、フラグは、pipが任意のURLに到達するこずを意味したす。これに぀いおは、譊告が添付されおいる必芁がありたす。

@pradyunsg氞久にそれを殺す実際の蚈画がない限り、私はそのゟンビを䌑たせるか、取り陀くこずを匷くお勧めしたす

ピップが「いいえ、私はあなたの借金を匕き受けたせん」ず蚀わない限り、私は実際にそれを必芁ずする人々が状況を修正するむンセンティブを持っおいるずは思わない

ピップメンテナヌずしおの私の懞念は、ピップが゚クスプロむトのベクトルになるこずを蚱可しないこずです。 PipはデフォルトのむンデックスずしおPyPIを想定しおいるため、PyPIには暗黙の信頌がありたす。 だから私の最初の質問は

  1. dependency_linksメタデヌタを持぀パッケヌゞがPyPIに存圚したすか
  2. dependency_linksのプロゞェクトのアップロヌドを拒吊するようにPyPIを倉曎できたすかたたはすでにそうしおいたすか
  3. あるいは、pipは、PyPIからダりンロヌドされたパッケヌゞの䟝存関係リンクオプションが蚭定されおいるかどうかに関係なくの凊理を単に拒吊できたすか

悪意のあるdependency_linksを含むPyPIのパッケヌゞにpipナヌザヌが噛たれる方法がないず確信できれば、それほど心配する必芁はありたせん。 カスタムむンデックスの䜿甚を遞択したナヌザヌは、それを信頌するかどうかを自分で決定する必芁がありたす。 それでもフラグを保持したいのですが、これは朜圚的にリモヌト゚クスプロむトであり、垞に明瀺的にオプトむンする必芁

したがっお、次の倉曎がありたす。

  1. PipはPyPIからの䟝存関係リンクを凊理したせん明瀺的に、たたはそれらが存圚しないこずがわかっおいるずいう理由だけで
  2. --process-dependency-linksフラグは非掚奚ではありたせんが、カスタムむンデックスに察しおのみ機胜したす。

それを珟状ずしお受け入れおも倧䞈倫です。 䟝存関係リンクスタむルの機胜が必芁な人は、もしあったずしおもどのように前進したいかを自分たちの間でぶち壊すこずができたす。

誰かが望むなら、䟝存関係リンクのメタデヌタを定矩する暙準にそれらすべおを入れるこずができ、珟圚の非掚奚は「暙準で指定された動䜜を優先しお珟圚の動䜜が削陀される」になりたす。 しかし、ピップ䞭心の芳点からは、私はむしろそれを行いたいず思いたす-䟝存関係のリンクを必芁ずする人々に暙準化の䜜業を任せたす結局のずころ、圌らはルヌトを持っおいるので、それは圌らの利益になりたす-暙準的な倉曎を取埗したす-完党なコミュニティコンセンサスでpipの動䜜を倉曎する。

基本的に、䟝存関係リンクを眮き換えるこずを目的ずした機胜がありたすが、それを䜿甚するPyPIぞのアップロヌドをブロックする方法がただないため、pipはただそれを尊重し始めおいたせん。

4175のこずですか 86b0779のためにブロックされおいるのはどれですか たぶん、 https//github.com/pypa/pip/blob/master/src/pip/_internal/req/req_install.py#L167を倉曎しお、 comes_fromがPyPIの堎合にのみ゚ラヌを出すこずができたすか

次に、 --process-dependency-linksの非掚奚譊告を倉曎しお、ナヌザヌが@構文に切り替え、劥圓な非掚奚期間の埌に--process-dependency-linksを削陀する必芁があるこずを瀺すこずができたす開始する必芁がありたす @構文が䜿甚可胜になった時点からのクロック刻み。

@pfmooreええ、それはたさにそれであり、それは前進の可胜性のある道のようです。

わかった。 誰も最初にそれに到達しない堎合、私はPRを曞くこずに぀いお芋るでしょう。

私が収集したものから、ここでのナヌザヌの問題は、代替手段がない機胜のためにそれを枡すずきに、「ねえ、私は非掚奚です」ず明瀺的に蚀うオプションを枡す必芁があるずいうこずです。

非掚奚期間䞭、dependency_linksのサポヌトを完党に廃止するこずに賛成です。 それたでの間、PEP 508 URL䟝存関係のサポヌトを远加したす。これは、pipを䜿甚するずきはただ倧音量であり、オプトむンである必芁があるず思いたす。

぀たり、次のこずを意味したす。

  • PEP 508url-depsを凊理する機胜をフラグの埌ろに眮きたす

    • 䜙談ですが、セキュリティに関係するナヌザヌがドキュメントを確認できるようにフラグに名前を付ける必芁がありたす

  • PyPIパッケヌゞからのPEP508 url-depsのむンストヌルを拒吊し始める
  • 䟝存関係-リンクは非掚奚のたたですが、削陀する日付がありたす

    • 正盎なずころ、私はこれを、代替案を印刷する単䞀のリリヌスよりも長い非掚奚期間にしたくありたせん。

私は昚日それをタむプしたしたが、それを送りたせんでした。 @pfmooreの最埌のコメントず基本的に同じだず

わヌい

URL郚門はオプトむンフラグを必芁ずしたすか PEP 508はそうは蚀っおおらず、珟圚の実装はそうしおいたせん。 論理はわかりたすが、セキュリティず䜿いやすさの質問に぀いおの私の刀断は信甚できたせん。

たた、切り替えを開始する前に、プロゞェクトが䟝存関係リンクから@構文に切り替える方法に関する明確なドキュメントを確認したいず思いたす。 非掚奚の圱響を受ける人々に連絡するこずはすでに十分に困難であり、察凊方法を理解できないずいう譊告は圹に立ちたせん。 理想的には、譊告には「切り替え方法」ドキュメントであるIMOぞのポむンタが含たれおいる必芁がありたす。

セキュリティず䜿いやすさの質問に぀いおの私の刀断を信甚しおいたせん。

私は「デフォルトで安党である」ずいう傟向があり、安党性の䜎い動䜜をオプトむンしたす。

スむッチのプッシュを開始する前に、プロゞェクトが䟝存関係リンクから@構文に切り替える方法に関する明確なドキュメント

私にはいいですね。

私は「デフォルトで安党である」ずいう傟向があり、安党性の䜎い動䜜をオプトむンしたす。

私の仕事でファむアりォヌルずセキュリティの制玄に察凊するのに苊劎しおいる人ずしお、私たちはこの機胜が最も圹立぀ず思われる環境の皮類内郚開発、クロヌズド゜ヌスに぀いおあたり理解しおいないこずをよく知っおいたす、厳密に制埡されたワヌクフロヌやネットワヌクレむアりトなど。 したがっお、私の傟向は、デフォルトのワヌクフロヌPyPIに察しお安党であるが、ワヌクフロヌにずっお明らかに重芁であるが、圌らがしなければならないトレヌドオフを適切に理解しおいないナヌスケヌスを持぀人々の邪魔になるような远加の障害を眮かないこずです。䜜る。

私の考えでは、「パッケヌゞが明瀺的に䜿甚するこずを遞択したサヌバヌからのものである堎合」は、URLリンクを蚱可するのに十分なオプトむンです。

芋る 私が意芋を

ワヌクフロヌにずっお明らかに重芁であるが、圌らがしなければならないトレヌドオフを適切に理解しおいないナヌスケヌスを持぀人々の邪魔になるような远加の障害を眮かないでください。

けっこうだ。 䞀郚のナヌザヌがワヌクフロヌぞの掞察を提䟛できれば、それは玠晎らしいこずです。

「パッケヌゞが明瀺的に䜿甚するこずを遞択したサヌバヌからのものである堎合」は、URLリンクを蚱可するのに十分なオプトむンです。

ここはよくわかりたせん。 /

芋る 意芋がないわけではなく、自分の偏芋が衚れおいないかどうかわからないだけです😄

ヘヘ。

けっこうだ。 䞀郚のナヌザヌがワヌクフロヌぞの掞察を提䟛できれば、それは玠晎らしいこずです。

私の考えでは、「パッケヌゞが明瀺的に䜿甚するこずを遞択したサヌバヌからのものである堎合」は、URLリンクを蚱可するのに十分なオプトむンです。

GitHubからの゜ヌスを蚱可するだけで、問題の99が解決したす。 アップストリヌムパッケヌゞにはバグたたは䞍足しおいる機胜がありたす。 私はそれらをフォヌクしお修正し、PRを発行しおから、それらがマヌゞされおPyPIでリリヌスされるたで、おそらく非垞に長い時間埅ちたす。 それたでの間、私のパッケヌゞはそれらのパッケヌゞの修正に䟝存しおいたす。

これは、1行で実行できる限り、オプトむンできたす。

盎接リンクHTTPSなどを想定を䜿甚するこずは実際にはセキュリティの問題ではなく、単なる可甚性の問題です。 PyPIからのそれらを犁止しおいるので、それで十分であり、別のフラグは必芁ありたせん。

私の仕事では、 @ pfmooreが蚀及したいく぀かのナヌスケヌス、぀たり、パッケヌゞがオヌプン゜ヌス、クロヌズド゜ヌスになる前の内郚開発などに該圓したす垞に内郚パッケヌゞは他の内郚パッケヌゞに䟝存し、それらはすべおバヌゞョン管理サヌバヌにありたす 。
ただし、ファむルシステムの堎所を参照しおいる人の䜿甚䟋もありたす...
ホワむトリストに登録されたホスト/堎所のリストを提䟛するこずは理にかなっおいたすか フラグの名前は、 @ pradyunsgが瀺唆しおいるように、IMOが、関連するリスクをナヌザヌに認識させるのに十分な説明的である必芁がありたす。 倚分--whitelisted-host 

@masdeseiscaracteres誀解されおいるかもしれたせん-パッケヌゞがPyPIから取埗された堎合、その䟝存関係のいずれかが@参照を介しお指定された堎合、倱敗するこずを瀺唆しおいたした。 しかし、ずにかくPyPIでそのようなケヌスが発生するこずはないはずですある時点でそれらを拒吊するこずを期埅しおいたすが、ただ蚭定できおいたせん。 @参照の他のすべおの䜿甚はOKです。

私たちが@pfmooreによっお蚘述されおいるものないPRを進める぀もりだように芋えたすhttps://github.com/pypa/pip/issues/4187#issuecomment -389846189。

PRは倧歓迎です。 :)

私はこれに到達する時間がなかったこずに泚意しおください-倉曎が難しいためではなく前述のように、それは単にcomes_fromに察するチェックであるように芋えたす、むしろ私が挑発する方法がわからないためです自分で゚ラヌを起こしたすさらに重芁なのは、そうするテストの曞き方がわかりたせん。 誰かがそのようなテストケヌスの䟋を提䟛できれば、それは非垞に圹に立ちたす。

誰かがそのようなテストケヌスの䟋を提䟛できれば、それは非垞に圹に立ちたす。

これを実蚌する既存のテストtest_install_pep508_with_url_in_install_requiresがありたす。

PyPIからむンストヌルする際の゚ラヌに぀いおは、URL芁件のあるものをPyPIに実際にアップロヌドするよりも良いオプションはありたせん。 😞この目的のためにPyPIにパッケヌゞをアップロヌドしたした。 https://pypi.org/project/pep-508-url-deps/


もう1぀は、 comes_fromはURLたたはパスではなく、 'box==0.1.0 from file:///private/tmp/box'行に沿った文字列です。 この問題を修正しようずしおいる人は誰でも、パッケヌゞの出所に関する情報を入手できるように、゚ラヌを発生させるためのより良い方法を芋぀け出す必芁がありたす。 :)

@pfmooreこの問題は私の心の近くにありたす😄@ pradyunsgのアップロヌドはあなたに必芁なものを提䟛したすか、そしおあなたはただこれに取り組むこずを蚈画しおいたすか そうでなければ、私はそれでスむングするこずができたす。

@bstrdsmkrいいえ、 @ pradyunsgが蚀うように、 comes_fromは゜ヌスURLではないため、思ったほど単玔ではありたせん。 ですから、い぀時間があるかわかりたせん私はこの機胜を個人的に䜿甚しおいないので、優先順䜍リストの䞊䜍にはありたせん。

䞊蚘のように、PRは歓迎したす:-)

アップロヌドされたパッケヌゞは実装にはたったく圹立ちたせん。機胜のテストにのみ圹立ちたす。

私の理解では、必芁な修正は次のようなものです。

if req.url and is_like(req.url, PYPI.url):
    raise

https://github.com/pypa/pip/blob/master/src/pip/_internal/req/req_install.py#L172で
ここで、URLが同じドメむンにある堎合、 is_like()はTrue返したす。 あれは正しいですか

うん。 そう思いたす。 それがコヌドの倉曎になりたす。

たた、テストずNEWS゚ントリを远加/曎新する必芁がありたす。

たた、この倉曎は、ドキュメントぞのリンクを提䟛する非掚奚メッセヌゞず、代替手段に切り替える方法をナヌザヌガむドに瀺す远加セクションを保蚌するのに十分重芁だず思いたす。

ピップメンテナヌずしおの私の懞念は、ピップが゚クスプロむトのベクトルになるこずを蚱可しないこずです。 PipはデフォルトのむンデックスずしおPyPIを想定しおいるため、PyPIには暗黙の信頌がありたす。

いいえ、明確な信頌がありたす。 たた、䟝存関係で倖郚゜ヌスを䜿甚しないようにするためのセヌフガヌドを远加しおも、状況は改善されたせん。公開されおいるVCSよりもpypiでマルりェアを隠す方が䟿利です。

IMHOのより良いアプロヌチは、開発者のVCSをプラむマリ゜ヌスずしお䜿甚し、pypyをそれらを指すレゞストリずしお保持し、VCSのコンテンツがpypyから取埗したものず同䞀であるこずを瀺す匷力な暗号化蚌明を備えたキャッシングプロキシを保持するこずです。 ぀たり

0登録

dev -- public key --> pypa

1アップロヌド

setuptools -- git+https:/.... --> pypa
pypi --> Tor --> give me that commit --> vcs
pypi <-- Tor <-- here -- vcs
pypi checks the signature matches the dev

2アむドル

pypi --> Tor --> give me that commit --> vcs
pypi <-- Tor <-- here -- vcs
pypi checks it

2取埗

flips a coin
if coin == 1:
  pip -- give me package git+https:/... --> pypi
  pip <-- signature || content -- pypi
  pip -- give me the signature --> vcs
  pip <-- signature -- vcs
else:
  pip -- give signature of package git+https:/... --> pypi
  pip <- signature -- pypi
  pip --> Tor --> give me that commit --> vcs
  pip <-- Tor <-- here -- vcs


pip checks if the signature matches the public key and signature from pypa
pip -- give me public key --> keyserver
pip <-- PK -- keyserver
pip checks signature given by VCS against the sdist given by pypy
pip caches public key and repo location

1シグニチャにより、むンストヌルされた゜ヌスはVCSの゜ヌスず䞀臎したす
2䜜者も䞀臎したす
3 pypaは新しいナヌザヌず䞍正行為を行うこずができたすが、叀いナヌザヌは䞍正行為を怜出する可胜性がありたす
4䜜成者は、pypyに䞎えられた以倖のWebむンタヌフェむスブランチに衚瀺しおチヌトし、pypyに別のブランチを送信できたす。 ブランチをURIの必須郚分にするず、うたく機胜したせん。

@KOLANICH pypy / pypaずは、PyPIPython Packaging Indexのこずだず思いたす。 PyPyはPythonの代替実装です。 PyPAPython Packaging Authorityは、PythonPackagingスペヌスで䞻芁なプロゞェクトを維持しおいるボランティアのグルヌプです。 頭字語を正しく取埗するか、䜿甚を控えおください。

あなたは、既存の十分に確立されたサヌビスの蚭蚈を根本的に倉曎するこずを提案しおいたす。 このような倧きな倉曎を垌望する堎合は、アヌキテクチャを管理/倉曎しお既存のワヌクフロヌの移行/䞭断を最小限に抑えるために、少なくずも実行可胜な移行蚈画ずPOC実装を提䟛するこずを歓迎したす。 倖郚ホスティングに䟝存するこずは、過去にPEP 470でPyPIから明瀺的に削陀されたものですが、それはあなたが提案しおいるものずはかなり異なるケヌスであるこずに泚意しおください。

PyPIはボランティアによっお維持され、寄付/埌揎されたむンフラストラクチャで実行されたす。 あなたはそれが別のボランティアが維持/運営しおいるサヌビスであるTorを介しお接続するこずを提案しおいたす。 これらは䞡方ずも䞻芁なプロゞェクトであり、ナヌザヌが盎接負担したり、ナヌザヌに衚瀺したりするこずはありたせんが、実行を維持するためのコストがかかりたす。


それでもなお、これはこの議論にふさわしい堎所ではありたせん。 PyPIの再蚭蚈を提案したい堎合は、 https//github.com/pypa/warehouseでディスカッションをやり盎すこずをお勧めし

提案ありがずうございたす。

これが埌のリリヌスにプッシュされた理由に぀いおは、5571-これに関するPRを参照しおください。

PIPむンストヌルログの譊告はこのURLを瀺したすが、ここでも他のチケットでも問題の解決策はありたせん。

さらに、これはさらに混乱を招きたす。PyPIずはどういう意味ですか PyPIむンタヌフェヌスArtifactoryなど、具䜓的にはpypi.orgを実装するサヌバヌを意味したすか

さお、明らかに、 setuptools 別名setup.py install ずpip install䞡方を䜿甚したパッケヌゞのむンストヌルをサポヌトしたい人は、ピクルスになりたす。 この状況で誰かが耇数の盞互䟝存パッケヌゞを凊理する唯䞀の方法は

さお、私が間違っおいる堎合は蚂正しおください。しかし、これたでのずころ、PyPAがサヌバヌぞのアップロヌドに関しお行った決定に基づいおこれを取り陀けば、基本的に、Artifactoryナヌザヌにずっおpip圹に立たなくなりたす。盞互に䟝存するパッケヌゞを持぀プラむベヌトリポゞトリを持っおいる䌚瀟。

私が間違っおいお、この党䜓の話の䞭で䜕かを逃したこずを教えおください私はしばらくそれをオンずオフでフォロヌしおいたした。 私はPEP508を赀くしたしたが、この点では実際には違いはありたせん。少なくずも、それがどのように状況を改善たたは悪化させるかはわかりたせん。

@ wvxvw-traiana PR5571を逃したず思いたす
そのPRの前および珟圚のリリヌスでは-18.0、pipはPEP508構文で指定された䟝存関係のむンストヌルを拒吊したす。

その埌、PRすでにマヌゞされおいるので18.1以降にあるはずですpipは、それらに䟝存するパッケヌゞがpypi.orgからのものである堎合にのみ、そのような䟝存関係を拒吊したす。

pypiからのものに䟝存するプラむベヌトリポゞトリからパッケヌゞをむンストヌルする堎合、明らかにそれは問題ありたせん。
プラむベヌトリポゞトリからのものに䟝存するpypi.orgからパッケヌゞをむンストヌルするず、倱敗したす。
プラむベヌトリポゞトリ内のものに䟝存するパッケヌゞをプラむベヌトリポゞトリからむンストヌルする堎合、それは問題ありたせん。

それが物事を片付けるのに圹立぀こずを願っおいたす

@bstrdsmkrそれは同じ起源ですか、それずもpypiは特別な堎合ですか ぀たり

別のプラむベヌトリポゞトリからのものに䟝存するプラむベヌトリポゞトリからパッケヌゞをむンストヌルする堎合。

この背埌にある理由に぀いおさらにコンテキストを远加するには

  1. 盎接URLリンクを䜿甚するず、パッケヌゞはむンタヌネット䞊のどこからでも任意のコヌドのダりンロヌドず実行をトリガヌできたす。 あなたがそれを行うパッケヌゞに責任を負っおいるならそれはOKです、それで私たちはその理解に盎接URLリンクを蚱可したす。
  2. 人々はPyPI具䜓的にはPyPIであり、䞀般的なパッケヌゞむンデックスではないからむンストヌルし、そこからダりンロヌドしたパッケヌゞを信頌するこずを期埅しおいたす。 倚数のPythonナヌザヌを公開するPyPIパッケヌゞの䟵害を防ぐために、PyPIからのパッケヌゞが盎接URLリンクに䟝存するこずを蚱可しおいたせんナヌザヌに負担がかかりすぎお、すべおを監査する必芁があるず䞻匵するためです倖郚コヌドぞのリンクに䜿甚するPyPIから。
  3. 䟝存関係リンクはsetuptools固有のメカニズムであり、pipではなくsetuptoolsの内郚機構によっお凊理されたす。 だから、盎接URLリンクずは異なり、我々は、圌らが䜕をすべきかを制埡するこずはできたせん。 そのため、私たちは自分たちで凊理する暙準の盎接URL圢匏を採甚しおそれらを非掚奚にしたした。

setuptools別名setup.py installの実行ずpip installの䞡方を䜿甚したパッケヌゞのむンストヌルをサポヌトしたい人は、今やピクルスになりたす。

trueの堎合、これはsetuptoolsが合意された暙準である盎接URLリンクのサポヌトを実装しおいないためです。 圌らず䞀緒にそれを自由に䞊げおください。

別のプラむベヌトリポゞトリからのものに䟝存するプラむベヌトリポゞトリからパッケヌゞをむンストヌルする堎合。

それはうたくいきたす。 PyPIは関䞎しおいたせん。

OK、それで、䞀方で、これが私に圱響を䞎えないこずを嬉しく思いたす。

䞀方、この「修正」は、どうやっおそれを眮くのか...回避するのは簡単すぎるようです。

echo "not-pypi 151.101.61.63" >> /etc/hosts
pip install --index-url not-pypi

私のビゞネスではありたせんが、実際には衚面レベルのアプロヌチのようです。 他の攻撃ベクトルは他のコメントで蚀及されおおり、setup.pyで奜きなものを簡単にダりンロヌドできたす。

ナヌザヌがナヌザヌが回避するのが難しいようには蚭蚈されおいたせん。 これは、PyPIには、URLに盎接䟝存するパッケヌゞのアップロヌドをブロックする方法がただないずいう事実に察する限定的な゜リュヌションを提䟛する手段です。 コンテキストに぀いおは、 https //github.com/pypa/pip/pull/4175#issuecomment-266305694を参照しお

@ dpwrussellpypi.orgは特殊なケヌスです。 プラむベヌトリポゞトリからプラむベヌトリポゞトリぞの倉曎埌は、正垞に機胜したす。

@ wvxvw-traianaそれはあなたが自分でそれをするのを劚げるこずを意味するものではありたせん。 これは、pypi.orgからパッケヌゞをむンストヌルしおいるだけだず思ったずきに、他の誰かがあなたにそれをしないようにするこずを目的ずしおいたす。

珟圚の議論ずは関係なく、この非掚奚の譊告を実際に曎新しおいないため、これを再開したす。

5726は、PEP 508 URLの䜿甚を提案する蚀語を远加したす。これは、IMOがこれに必芁な最埌のビットです。

じゃあ。 芁玄させおください

  • 䟝存関係リンクはただ非掚奚であり、pip19.0で削陀されるようにスケゞュヌルされおいたす。
  • それの暙準的な裏付けのある代替品は、PEP 508URLの䟝存関係です。
  • PyPIからむンストヌルするずきに、パッケヌゞにPEP 508 URL䟝存関係がある堎合、pipはむンストヌルを䞭止したす。

@pfmooreは、これらの決定の理由をここで詳しくhttps 

@pradyunsg setup.pyのinstall_requiresでPEP 508 URL䟝存関係が蚱可されるのはい぀ですか 日付は蚭定されおいたすか

pipの次のリリヌスでは、10月に予定されおいる18.1です。 pipの3か月のリリヌスサむクルの詳现に぀いおは、https//pip.pypa.io/en/latest/development/release-process/を参照しおください。 :)

https://github.com/pypa/wheel/issues/249は、PEP 508のURL䟝存関係が実行可胜な代替手段になる前に、察凊する必芁がありたす。

PEP 508のURL䟝存関係が実行可胜な代替手段になる前に、 pypa / Wheel249に察凊する必芁がありたす。

これは解決されたした。

pip 18.1リリヌスノヌトには、

PEP 508URL芁件を䟝存関係ずしお䜿甚できるようにしたす。

セキュリティ察策ずしお、PyPIからパッケヌゞをむンストヌルするずきに、それらのパッケヌゞがPyPIでホストされおいないパッケヌゞに䟝存しおいる堎合、pipは䟋倖を発生させたす。 将来的には、PyPIはそのような倖郚URL䟝存関係を持぀パッケヌゞの盎接アップロヌドをブロックしたす。 4187

぀たり、これは基本的にURLを䜿甚しお䟝存関係を指定できるこずを意味したすが、それらがPyPI URLでない堎合、パッケヌゞはpipを䜿甚しおむンストヌルできたせんか たぶん私はそれを完党に間違っおいたすが、URLの䟝存関係はどのように䜿甚されるこずになっおいたすか

PyPIでホストされおいる@JarnoRFBパッケヌゞは、URLに䟝存するこずはできたせん。

PyPIでホストされおいないパッケヌゞは、URLに䟝存する可胜性がありたす。 パッケヌゞをgithubから盎接むンストヌルする堎合たずえば、URLの䟝存関係が解決されおむンストヌルされたす。 そのようなむンストヌルの䟋

pip install git+https://github.com/bstrdsmkr/some_package.git

基本的に、URLからむンストヌルする堎合は、URLに䟝存する可胜性があり、そうでない堎合は䟝存したせん。 たた、わかりやすくするために、URLず非URLの䞡方の䟝存関係を持぀こずもできたす

マむナヌな远加

... URLからむンストヌルする堎合、URLに䟝存する可胜性がありたす

... URLVCSなど、ロヌカルファむル、たたはPyPIではないパッケヌゞむンデックスからむンストヌルする堎合は、...

それで、䞊蚘の説明に埓っおinstall_requiresを凊理するpipのバヌゞョンはありたすか 最終状態の䞊のタグを理解するこずはできたせん。珟圚のpipドキュメントは、setuptoolsのinstall_requiresドキュメントを指しおおり、それでもdependency_linksを䜿甚するように指瀺されおいたす。

自分でドキュメントに話すこずはできたせんが、PyPI以倖のパッケヌゞがURLから䟝存関係をむンストヌルできるようにするこの「緩和」はpip18.0でリリヌスされたした

AFAIK、install_requiresのURL䟝存関係は、pip18.1以降でサポヌトされおいたす。

PEP 508URL芁件を䟝存関係ずしお䜿甚できるようにしたす。

出兞リリヌスノヌト

うヌん、私の偎のタむプミス-

--process-dependency-linksを䜿わずに䜕をすべきかに぀いお私のようにこの問題に最初に遭遇した人々のために、小さいながらも成功した䟋をここに残したいず思いたす。 このワヌクフロヌを䜿甚しお、ナヌザヌはGitHubたたはロヌカル゜ヌスPyPIではないからpipむンストヌルを実行したり、pipむンストヌルrequirements.txtたたはpython setup.pyむンストヌルを実行したり、pipを䜿甚しおTravis-CIで䜜業したりできるようになりたした。バヌゞョン18以降なので、倚くのベヌスをカバヌしおいるず思いたす。 私はそれが誰かに圹立぀こずを願っおいたす、そしおこれが他の人にずっお話題から倖れおいるように思われるならば私の謝眪

あなたのrequirements.txtファむルで、人々がパッケヌゞ「foo」のGitHubdevブランチに䟝存できるようにしたいず仮定したす。䟋

scipy>=0.17
matplotlib>=2.0
foo @ git+https://github.com/foo-organization/foo@dev#egg=foo-9999

setup.pyファむル

import os, sys
from setuptools import setup, find_packages

def read_requirements():
    """Parse requirements from requirements.txt."""
    reqs_path = os.path.join('.', 'requirements.txt')
    with open(reqs_path, 'r') as f:
        requirements = [line.rstrip() for line in f]
    return requirements

setup(
    ..., # Other stuff here
    install_requires=read_requirements(),
    )

install_requiresずrequirements.txtを混同するのは賢明ではないず蚀う人もいたす。リリヌスされたバヌゞョンに぀いおは同意したすが、これは開発にはうたくいくず思いたす。

ああ、きちんず。 したがっお、パッケヌゞ「A」ず「B」の䞡方がこのメ゜ッドを䜿甚し、パッケヌゞ「A」が䟝存関係ずしお「B」をリストしおいる堎合、「A」をむンストヌルするず、実際には「B」のrequirements.txtが凊理されたす。 通垞はそうではありたせん-そうですか

たた、今朝、install_requires自䜓が少し悪いこずを読みたした。これらのむンストヌルはsetuptoolsによっお行われたため、pipオプションは無芖されたしたが、その情報が叀くなっおいるかどうかはわかりたせん...

たた、今朝、install_requires自䜓が少し悪いこずを読みたした。これらのむンストヌルはsetuptoolsによっお行われたため、pipオプションは無芖されたしたが、その情報が叀くなっおいるかどうかはわかりたせん...

install_requiresずsetup_requires混同しおいたす。

ああ、きちんず。 したがっお、パッケヌゞ「A」ず「B」の䞡方がこのメ゜ッドを䜿甚し、パッケヌゞ「A」が䟝存関係ずしお「B」をリストしおいる堎合、「A」をむンストヌルするず、実際には「B」のrequirements.txtが凊理されたす。 通垞はそうではありたせん-そうですか

@stevebrasierはい、そうなるず思いたす。これは、Bずは異なるバヌゞョンの必芁なパッケヌゞをAに固定した堎合に問題になる可胜性がありたす。

こんにちは皆さん、この堎合の非掚奚の経路は短すぎたこずに泚意したいず思いたす。 䟝存関係リンクはかなり前から非掚奚ずしおマヌクされおいるこずは知っおいたすが、それらを眮き換えるために䜿甚できるPEP 508 URLは、18.1たで実装されおいたせん。 その結果、䟝存関係リンクからURL芁件に切り替えるたでの期間はわずか3か月でした。これは、倧芏暡なプロゞェクトでは非垞に短い時間です。

@rgerkinこんにちは、私は無駄にあなたの指瀺に埓おうずしおいたす、

PACKAGE @ git + ssh//[email protected] OWNER / PACKAGEを怜玢しおいgit @ BRANCH
https://pypi.org/simple/PACKAGE/を読む
'PACKAGE'のむンデックスペヌゞが芋぀かりたせんでしたスペルが間違っおいる可胜性がありたすか
すべおのパッケヌゞのスキャンむンデックスこれには時間がかかる堎合がありたす
https://pypi.org/simple/を読む

PACKAGE @ git + ssh//[email protected] OWNER / PACKAGE。 git @ BRANCH 、これはinstall_requiresにありたす。

なぜ私が䞊蚘を取埗しおいるのか分かりたすか

@KevinMars私の䟋ずあなたが持っおいるものずの間には、git_ssh、bitbucket、a.gitサフィックス、名前付きブランチの䜿甚、バヌゞョンタグなしなど、いく぀かの違いがありたす。 たぶん、それらの1぀以䞊が、あなたのURLではなくPyPIで怜玢するようにpipを導いおいたす。 どのバヌゞョンのpipを䜿甚しおいたすか

発蚀に私が芋぀けたこずを䜕か䜿甚するsetup.pyでパッケヌゞをむンストヌルするためにpython setup.py installただ䞭に倖郚䟝存関係の宣蚀を必芁ずdependency_links 。

setup.pyファむル

import os, sys
from setuptools import setup, find_packages

def read_requirements():
    """Parse requirements from requirements.txt."""
    reqs_path = os.path.join('.', 'requirements.txt')
    with open(reqs_path, 'r') as f:
        requirements = [line.rstrip() for line in f]
    return requirements

setup(
    ..., # Other stuff here
    install_requires=read_requirements(),
    )

@rgerkinこの゜リュヌションを共有しおいただきありがずうございたす。 しかし、Pythonパッケヌゞをセットアップするためにpbrを䜿甚しおいる堎合はどうなりたすか これをpbrに合わせる方法は

@KevinMars私はたったく同じ問題を抱えおいたす。 修正を理解したこずがありたすか SSH経由でプラむベヌトビットバケットリポゞトリの特定のブランチを芁求しようずしおいたす。

--process-dependency-linksがもう存圚しないこずに気づきたした。 コミュニティのすべおの仕事に感謝しおいたす。 議論を終わらせないずいう決定を正圓化しようずし、問題の解決ずリダむレクトの迷路が遞択された解決策でしたが、それでもこのオプションを残しおも誰にも害はなかったず思いたす。

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