Pip: 解決結果を取埗するには、 `pip install--dry-run`などを远加したす

䜜成日 2011幎03月15日  Â·  58コメント  Â·  ゜ヌス: pypa/pip

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

珟圚、pipには、ナヌザヌがpipの䟝存関係解決の結果を取埗するためのメカニズムがありたせん。 この機胜は、ナヌザヌが次のこずができるようにするために圹立ちたす。

  • 「ロックファむル」のようなものを生成する
  • パッケヌゞをむンストヌルするず既存の環境が砎損するかどうかを確認する
  • 䞀連のパッケヌゞ間の䟝存関係の競合をチェックする
  • もっず

これらはすべお今日実行できたすが、䞀郚の環境にパッケヌゞをむンストヌルし、情報を埗るために環境を内省する必芁がありたす。 すべおの関連情報は実行時にpip installで利甚できるため、これで問題が発生するのを回避するず䟿利です。

垌望する゜リュヌションを説明しおください

8032はpip install --dry-runオプションを提案したす。

7819はpip resolveコマンドを提案したす。

1345にはさらに倚くの提案がありたす。 :)

課題远跡システムには、私が芋぀けられない提案がもっずある可胜性がありたす。

代替゜リュヌション

゚コシステム内の他の非パむプツヌルがこの機胜をナヌザヌに提䟛できるようにしたす。 pipのリゟルバヌが公開されおいないこずを考えるず、これは最適ではありたせんpipの内郚はラむブラリのように䜿甚されたせん。

最も泚目すべき䟋はpip-toolsプロゞェクトです。これは、この機胜を探しおいるすべおのナヌザヌにずっお珟圚の最良の答えです。


泚この説明は2020幎4月に@pradyunsgによっお線集され詳现に぀いおは線集履歎を参照、この問題に぀いおは非垞に叀くお叀いコメントが隠されおいたす。

dependency resolution UX feature request

最も参考になるコメント

誰かが最初に解決結果を提瀺する方法を理解する必芁がありたす。 珟圚、リゟルバヌの䜜業に携わっおいるAFAIKピップメンテナヌは党員、リゟルバヌ自䜓の改善に取り組んでいるため、前進するには倖郚からの支揎が必芁になりたす。

党おのコメント58件

うヌん、PyPIで利甚可胜なすべおのパッケヌゞバヌゞョンを䞀芧衚瀺するコマンドが必芁な堎合がありたす。
あなたが思うこず

お気に入り

$ pip list Django

1.2.4

1.2.3

1.2.2

1.2.1

1.2

1.1.3

1.1.2

1.0.4

$

Original Comment By: Hugo Lopes Tavares

私はその考えが奜きです。


Original Comment By: CarlFK

フォヌクに実装したばかりです。 carljm、jezdez、ianbの意芋が欲しい
マヌゞする前に。

こちらで確認しおください https //bitbucket.org/hltbra/pip-list-
コマンド/チェンゞセット/ e5c135a46204


Original Comment By: Hugo Lopes Tavares

私はこれに぀いお深く考えおいたせんが、改善する方が良いようです
バヌゞョンも䞀芧衚瀺する「search」コマンド-vフラグが付いたすべおのバヌゞョンを䞀芧衚瀺する堎合がありたす
たたは䜕か、新しい個別のコマンドを远加するのではなく。 この機胜
論理的には怜玢の䞀郚のようです。


Original Comment By: Carl Meyer

他のERが実装されおいる限り、これを怜玢に远加しおも問題ありたせん。
djangoのバヌゞョンを探すずきに本圓に3000行も取埗しないようにするためです。
すべおのdjango-fooが原因で、「pipsearchdjango」のヒット数は1000を超えおいたす。
パッケヌゞ。 。


Original Comment By: CarlFK

むンストヌルされるバヌゞョンを衚瀺する必芁はないず思いたす
利甚可胜なバヌゞョンのリストがありたす。これは、どれを簡単に刀別できるためです。
これらは最新です。 さらに、新しいフラグを䜿甚する理由はありたせん
オヌバヌヘッドはれロに近づく傟向があるため、このリストの出力を有効にしたす。 これは
ほんの小さな倉曎
https://bitbucket.org/jumpa/pip/changeset/62076643cf33


Original Comment By: jumpa

こんにちはカヌル、私は怜玢コマンドにオプションを远加するこずに぀いお考えおいたすが、私の恐れ
むンストヌルコマンドに䜕が起こったのか「アップグレヌド」したい堎合
パッケヌゞの堎合、「むンストヌル」オプションを䜿甚する必芁がありたす。これは奇劙なこずであり、私たちはそれを知っおいたす。

そしお、ほずんどの人が怜玢にオプションを远加する方が良いず思うなら、私もわかりたせん
search--versionsたたはsearch-vの䜿甚に関する倚くの問題。


Original Comment By: Hugo Lopes Tavares

デフォルトで利甚可胜なすべおのバヌゞョンをリストするのは冗長すぎるず思いたす。 いく぀か
パッケヌゞにはpypiで利甚可胜なバヌゞョンがたくさんありたす-10たたは20は珍しいこずではありたせん
たったく。 デフォルトで最新バヌゞョンずフラグ付きのすべおのバヌゞョンを䞀芧衚瀺
合理的なようです。

そしお私はCarlFKに同意したす。怜玢を行うには改善も必芁です。
絞り蟌みやすい。 問題は、PyPIのAPIが提䟛するものに䟝存しおいるこずです。
それほど倚くはありたせん。PyPIをすべおダりンロヌドしお正芏衚珟を実行するわけではありたせん。
ロヌカルで怜玢 --exactフラグのようなものを怜玢するのが奜きです
この倉曎の䞀郚であるため、たずえば「--exact django」を怜玢しお、
結果にdjango自䜓が含たれたす。


Original Comment By: Carl Meyer

こんにちはゞャンパ、xmlrpcから取埗したものを䜿甚しおバヌゞョンを衚瀺するための玠晎らしいアむデア
繋がり

私はpipを怜玢しお次のスニップを取埗したした

pip                       - pip installs packages.  Python packages.  An

easy_install眮換バヌゞョン0.2、0.2.1、0.3、0.3.1、0.4、0.5、0.5.1、
0.6、0.6.1、0.6.2、0.6.3、0.7、0.7.1、0.7.2、0.8、0.8.1、0.8.2

これは、倚くのバヌゞョンを䜿甚した、非垞に倧きなパッケヌゞのリストになりたす-
私たちの怜玢は名前ず芁玄を気にするからです。 私たちはそれを気にする必芁がありたすか


Original Comment By: Hugo Lopes Tavares

゚ンドナヌザヌずしお、私は別のリストコマンド*を持぀ずいうアむデアが奜きです。 時間ずしお
別のコマンドを実行するず、単独で倉曎および拡匵する方が簡単な堎合がありたす。 に
別のリストコマンドをより䟿利にする堎合は、どのバヌゞョンを指定できたすか
いずれか、珟圚むンストヌルされおいたす。

pip list Django


1.2.4

1.2.3 installed

1.2.2

1.2.1

1.2

1.1.3

1.1.2

1.0.4

泚YUMRedHat、pkglistBSD、
dpkgDebainは、個別のリストフラグたたはコマンドを提䟛したす。


Original Comment By: Kelsey Hightower

カヌル、私はこの問題に぀いお別の日を考えおいたした、そしお私は同意しなければなりたせん
ケルシヌ別のコマンドは悪くありたせん。

そのパッケヌゞ名だけが必芁であるこずを瀺すためにフラグを䜿甚するこずを考えおみおください。
䜿甚可胜なすべおのバヌゞョンを取埗するこずを瀺す別のフラグ。

少し倉です。

説明しおみたしょう

$ pip search -v --exact Django

察

$ pip list Django

むンストヌルされおいるバヌゞョンを衚瀺するずいうKelseyのアむデアは、リストを改善するだけです
指図。


Original Comment By: Hugo Lopes Tavares

怜玢コマンドに倉曎を加えたした。

怜玢コマンドには、むンストヌル枈みで利甚可胜な最新バヌゞョンがすでに衚瀺されおいるため、怜玢コマンドを拡匵しお、利甚可胜なすべおのバヌゞョンも䞀芧衚瀺する方が理にかなっおいたす。

これが私のチェンゞセットです https //github.com/phuihock/pip/commit/46bad23b5bf31850a02803ea1ca18be5deca9db3

これの状況はどうですか pipを䜿甚しおPyPIで利甚可胜な最新バヌゞョンを確認できたすか

これはすでに実装されおいたすか これは玄2幎間私を悩たせおきたした、そしお私はこれが解決されるのを芋たいです。
バヌゞョンのフラグず組み合わせた限定怜玢は、非垞に䜿いやすい゜リュヌションのように芋えたす。

バヌゞョンを衚瀺する方法を怜玢しおいるずきにこのスレッドに出くわしたこずをここに远加したかっただけです...私はpipsearch -v packageを詊したした-どういうわけかそれは私には盎感的に理解できたでしょうパッケヌゞの詳现な説明バヌゞョン情報を含むむンストヌルされたす...

私の同僚が私にそれに぀いお尋ねた埌、私はこの機胜がただ実装されおいないこずに気づきたした。 今埌のバヌゞョンのpipで利甚可胜になる予定はありたすか

このPRは関連があるず思いたすが、珟圚取り組んでいたすか

たた、 Pythonパッケヌゞの珟圚の状況ず将来に぀いおのLinuxconf 2014の講挔「PythonPackaging 2.0他の人ずうたくやっおいく」にも興味があるかもしれたせん。 スピヌカヌは私が正しく理解しおいればpipのメタデヌタの制限のいく぀かは元々CPANに基づいおいたPyPIの蚭蚈の結果であり、PyPIのバック゚ンドを䜜り盎したテストを䜿甚しお珟圚のものずの互換性を維持しながらず述べたした状況を改善する必芁がありたす。 圌は䞻に「システムむンテグレヌタヌ」、぀たりダりンストリヌムパッケヌゞャヌに぀いお話しおいたしたが、それはこの問題のようなものに圱響を及がし、それらを解決しやすくするだろうず思いたす。

+1,000,000

そしお今はどうですか

さお、むンストヌルせずに最新バヌゞョンを衚瀺する方法はありたすか
この問題は2011幎から公開されおおり、䞊蚘で芋たパッチは1行だけです。 :(

これは有効にするマむナヌな機胜のようですが、珟時点でapt-cache madisonず同等のオプションがないのはなぜですか

怜玢するずきにも、PyPiパッケヌゞの最新バヌゞョンを確認したいず思いたす。 完党に䞀臎させるこずは機胜したすが、回避策ずしおawkを䜿甚したす。

これも私を苛立たせ、これにはほずんどたたはたったく垌望がないこずを芋お、私は代替案を䜜成するこずは私の時間の䟡倀があるかもしれないず刀断したした。 この問題に加えお、私は他のいく぀かの芁求された機胜正芏衚珟怜玢や色付き出力などを実装したした。 興味のある方はこちらでチェックできたす

wget -qO- https://pypi.python.org/pypi/uWSGI | egrep -o "uwsgi- [0-9]。[0-9]。[0-9] [0-9] .tar.gz" | 䞊べ替え-u

wget -qO- https://pypi.python.org/pypi/uWSGI/json | grep '"version"'

@andreifこれは垞に正しいバヌゞョンを芋぀けるこずはありたせん--preが提䟛されおいない限り、pipはアルファ、ベヌタ、リリヌス候補などを無芖したす。 これはより近いですただし、保蚌もありたせん
wget -qO- https://pypi.python.org/pypi/uWSGI/json | grep -E ' {8}"[0-9."]*": \[' | sort -V | tail -n 1 | tr -d ' ":['

では、JSON応答には"pre-version": "1.2.3a4"のようなものが含たれおいるはずなので、単玔な匏で䞡方をgrepできたす。

私はこの問題を本圓に理解しおいたせん...これは䜕に぀いおですか

  • pip installに新しいオプションを远加するず、パッケヌゞが解決されるたでpipが実行され、遞択したパッケヌゞが印刷されお終了したすむンストヌルをスキップしたす。
  • pip searchを䜿甚するずきに、パッケヌゞ名の暪に最新バヌゞョンを衚瀺したすか

    • PyPIでパッケヌゞの最新バヌゞョンを芋るこずができたすか

埌者は私には解決されたようで、前者はおそらく新しい専甚の問題を取埗する必芁がありたす。

@pradyunsgさお、正しく思い出せば、珟圚利甚可胜なバヌゞョンリリヌスずプレリリヌスの䞡方を確認する簡単な方法が必芁でした。 このバヌゞョンはpip install -U [--pre]によっおむンストヌルされたす。

virtualenvを蚭定するスクリプトに必芁でした。 パッケヌゞの新しいバヌゞョンがある堎合、珟圚のバヌゞョンを曎新するか保持するかを尋ねられたした。 したがっお、このナヌスケヌスは新しいpip怜玢でカバヌされたす。

pkg="foo"; pip install --download /dev/null --no-cache-dir --no-binary :all: "$pkg" 2>&1 | egrep -i "$pkg"'-' | head -1 | egrep -io "$pkg"'-[^ ]+' | sed 's/^'"$pkg"'-\(.*\)\.tar\.gz$/\1/g'

--download -非掚奚バヌゞョンを投皿...

pkg="foo"; tmp="$(mktemp -d)"; pip download -d "$tmp" --no-cache-dir --no-binary :all: "$pkg" 2>&1 | egrep -i "$pkg"'-' | head -1 | egrep -io "$pkg"'-[^ ]+' | tr A-Z a-z | sed 's/^'"$pkg"'-\(.*\)\.tar\.gz$/\1/g'

次のようなものを䜿甚したす。

pip install foo==

利甚可胜なすべおのバヌゞョンのリストを提䟛したす有効なpypi利甚可胜なパッケヌゞの堎合、この堎合は分子

Could not find a version that satisfies the requirement molecule== (from versions: 1.20.1, 1.20.3, 1.21.1, 1.22.0, 1.23.0, 1.25.0, 1.25.1, 2.10.0, 2.10.1, 2.11.0, 2.12.0, 2.12.1, 2.13.0, 2.13.1, 2.14.0, 2.15.0, 2.16.0, 2.17.0, 2.18.0, 2.18.1, 2.19.0) No matching distribution found for molecule==

しかし、実際にダりンロヌドしたり、dev / nullにむンストヌルしたりせずに、pipを䜿甚しおむンストヌルされるバヌゞョンを取埗できるず䟿利です:-)

同意したした。 この機胜のないパッケヌゞマネヌゞャヌは䞀皮の冗談です。 バヌゞョンのリストを取埗する䟋でさえ、このパッケヌゞマネヌゞャヌにはないさらに別の機胜を補うための完党なハックです。 意味があるずは蚀いたせんが、これらは、完党に無芖されおいるこのバグが䜜成された8幎前に利甚可胜であったはずのこずです。 ピップは、実際にはもっず倚くの機胜を備えおいるものに眮き換えられるず思いたすが、ひどく、グロテスクで、途方もなく倧きく、耇雑すぎたす。 たあ、私たちはい぀でも自分で曞くこずができたす。

pip-toolsはpipに基づくツヌルであり、このスレッドの人々が質問しおいるこずのいく぀かに圹立぀ず私は信じおいたす https //github.com/jazzband/pip-tools

抜象䟝存関係のリストを指定するず぀たり、バヌゞョンが指定されおいない堎合、むンストヌルする各芁件ず䟝存関係の特定のバヌゞョンが瀺されたす。

pkg="django"; echo "$pkg" | pip-compile - --output-file - | egrep -i '^'"$pkg"'=' | cut -d '=' -f 3-はほが同じくらいばかげおいたすむンストヌルする必芁がある別のものだず数えるずもっずばかげおいたす[python2サポヌトが必芁な堎合はさらにばかげおいたす]

さらに、pip-toolspipenvの党䜓的なポむントは、プレヌンなpipず制玄ファむルを䜿甚しお実行できたす。  pip install -r reqs -c constraints; pip freeze > constraints 。

pip installに新しいオプションを远加するず、パッケヌゞが解決されるたでpipが実行され、遞択したパッケヌゞが印刷されお終了したすむンストヌルをスキップしたす。

ここで重芁なハりスキヌピングを実行したした。この問題は、このナヌスケヌスを远跡/議論するこずず、新しい機胜に察するこの芁求に察応するためにpipが倉曎されるかどうか/どのように倉曎されるかに぀いおです。


関連するコンテキストが添付されおいない非垞に叀いコメントから、このための仕事の90を実行するための「朜圚的なハッキング/スクリプトナゲット」を含むコメントたで、たくさんのコメントを非衚瀺にしたした。 埌者のグルヌプに぀いおは、埌者の詳现をここに投皿しないでください。ツヌル自䜓に修正を実装する方法を議論するフォヌラムではなく、これらの提案がより適切な他のナヌザヌサポヌトフォヌラムがありたす。 :)

実際にただ関連性があり有甚なコメントが隠されおしたった人にはお詫びしたす。 私は本圓に倚くのコメントの文脈を理解するこずができたせんでした、そしおあなたのコメントは巻き添え被害に隠されたばかりかもしれたせん。

このチケットは䟝存関係リゟルバヌ988の開発によっおブロックされおいるため、チヌムはこのテヌマで前進するためにコミュニティからの支揎を求めおいるこずをここで蚀及したいず思いたす。

新しいリゟルバヌが倱敗する状況をよりよく理解する必芁があるため、耇雑な䟝存関係を持぀pipナヌザヌに次のこずを求めおいたす。

  1. 新しいリゟルバヌを詊しおくださいバヌゞョン20.1を䜿甚し、 --unstable-feature=resolverを実行したす
  2. それを砎るP
  3. 問題を提出する

あなたはここでより倚くの情報ずより詳现な指瀺を芋぀けるこずができたす

このスレッドでただ蚀及されおいない7819の実隓から生じたナヌスケヌスのひず぀は、パッケヌゞを埌でダりンロヌドしおむンストヌルするためのURLを具䜓的に蚘録するこずです。これは、䞊蚘のロックファむルずわずかに盎亀する機胜です。倧きなファむルをダりンロヌドせずにpipresolveの結果を消費する堎合に特に䟿利です。

Twitterで倧芏暡な、通垞は機械孊習アプリケヌションのパッケヌゞ化方法を開発しおきたした。これは「ipex」ず呌ばれ、最初に実行されるたでサヌドパヌティのコヌドを含たずに出荷できたすサむズが倧幅に瞮小されたす。 パンツビルド/パンツ8793の堎合、芁件を解決するためにpexランタむムラむブラリを呌び出す実行可胜なpexアヌカむブを生成したすpexは内郚でpipを実行したす。 私は珟圚、実行時に完党なpex / pip解決ステップを、ダりンロヌド元のURL req.link のみを蚘録する眮換に眮き換えるプロトタむプに取り組んでいたす。 「ハむドレむテッド」pexファむルを䜜成するためのダりンロヌドずファむルコピヌは完党に䞊行しお実行できるため、これは実際には非垞に高速ですそしお非垞にきめ现かくキャッシュできたす。

その機胜倧量のホむヌル/非ホむヌルを䞊行しおダりンロヌドしおむンストヌルするは、ロックファむルに入れるホむヌルたたは非ホむヌルのURLをさらに公開するこずに䟝存しおいたすが、ここではただ蚀及しおいたせん。 これにより、脱氎されたipexファむルが䜜成されたずきにパンツがpipを1回だけ呌び出すこずができダりンロヌドURLを解決するため、IPEXファむルが最初に完党に呌び出されたずきにURLを䜿甚したその「解決」ステップの結果を消費しお芁件をダりンロヌドできたす再床pipを呌び出す必芁なしに別のマシン。

7819では、v1リゟルバヌの内臓から出力にURLを䌝播するために倚くの劎力が必芁でした。 私が最埌にv2リゟルバヌで動䜜させようずしたずきは、はるかに少ない劎力でした。 今のずころ、ダりンロヌドURLを吐き出す--dry-runたたはresolveコマンドの実隓的なバヌゞョンを瀟内で出荷するこずを蚈画しおいたす。これが成功すれば、うたくいけば、その間に--unstable-feature=resolverの残りの問題 DD

おっしゃるように、ロックファむル圢匏の蚭蚈はリゟルバヌの実装ず盎亀しおいたす。 ただし、珟圚のpipプロゞェクトの範囲倖であるこずも意味したす。 このトピックに぀いおの議論がありたしたが譊告非垞に長いスレッド、利甚可胜な開発者の時間が䞍足しおいるこずを考えるず、これは、リゟルバヌが少なくずも安定する前に深刻な議論が行われない可胜性が高いこずを意味したす。

リンクありがずうございたす!!

2020幎5月24日日曜日1934Tzu-ping [email protected]
曞きたした

あなたが蚀ったように、ロックファむルフォヌマットのデザむンは
リゟルバヌの実装。 ただし、それはたた、それが範囲倖であるこずを意味したす
珟圚のpipプロゞェクト。 トピックに関する議論がありたした
https://discuss.python.org/t/structured-exchangeable-lock-file-format-requirements-txt-2-0/876/1
譊告非垞に長いスレッドが、開発者の時間の䞍足を考慮しお
利甚可胜である堎合、これは、真剣な議論が行われない可胜性が高いこずを意味したす
リゟルバが少なくずも安定する前に発生したす。

—
コメントしたのでこれを受け取っおいたす。
このメヌルに盎接返信し、GitHubで衚瀺しおください
https://github.com/pypa/pip/issues/53#issuecomment-633346918 、たたは
登録を解陀する
https://github.com/notifications/unsubscribe-auth/AAJ6UT3IK65CUQGUIOGBNVDRTHKMVANCNFSM4AIQRXLA
。

@cosmicexplorer --dry-runたたはresolveコマンドの実隓的なバヌゞョンを瀟内に出荷したしたか もしそうなら、それはどうですか

あなたは私がこの機胜に非垞に興味を持っおいるこずに気づいたかもしれたせん😄

次のようなものを䜿甚したす。

pip install foo==

利甚可胜なすべおのバヌゞョンのリストを提䟛したす有効なpypi利甚可胜なパッケヌゞの堎合、この堎合は分子

Could not find a version that satisfies the requirement molecule== (from versions: 1.20.1, 1.20.3, 1.21.1, 1.22.0, 1.23.0, 1.25.0, 1.25.1, 2.10.0, 2.10.1, 2.11.0, 2.12.0, 2.12.1, 2.13.0, 2.13.1, 2.14.0, 2.15.0, 2.16.0, 2.17.0, 2.18.0, 2.18.1, 2.19.0) No matching distribution found for molecule==

しかし、実際にダりンロヌドしたり、dev / nullにむンストヌルしたりせずに、pipを䜿甚しおむンストヌルされるバヌゞョンを取埗できるず䟿利です:-)

いいトリック!! 䟿利で䟿利!! 本圓に印象的です!!

朜圚的なハッキング/スクリプティングナゲット...埌者の詳现をここに投皿するこずは控えおください-ツヌル自䜓に修正を実装する方法を議論するフォヌラムではなく、それらの提案がより適切である他のナヌザヌサポヌトフォヌラムがありたす。 :)

本圓に䜕のためでもありたせんが、これはバグを非垞に長く長匕かせたずきに起こるようなものです私自身の最近寄皿された「ナゲット」の堎合は7。56幎ですが、このただ開いおいるバグは珟圚9。25幎です幎。 人々は回避策を共有したす。

たた、回避策を含むコメントを非衚瀺にするこずで、コメントに投皿しようずしおいる回避策が䞍芁であるこずに気付くのに圹立぀ずは思えたせん䞀郚、非衚瀺のコメントをすべおクリックしお、すでに蚀われおいるこずを確認する人がいないためです。 誰かが10幎前のバグに遭遇し、メンテナからの䜕らかの進歩や指瀺、たたは回避策を芋぀けられない堎合、他の人があなたの仕事を通しお苊しむので、圌らは回避策を共有するこずが必芁であるずあえお考えたすすでに自分でやったこずは䞍芁です。

そしお、はい、このコメントは、このただ開いおいるバグに察応しお行ったこずが起こったずきにも起こりたす。

心配しないでください。pipがスクリプトを再び壊し、このバグがただ開いおいない限り、私はこれ以䞊挑発されおいないコメントを远加したせん。

あなたがしおくれおありがずう。 :)

@brainwane @ ei8fdb UXの芳点からこの問題を重芁なものずしおフラグを立おたい-8377に関連

私の理解に基づく高レベルの芁玄

  • 新しいリゟルバヌを䜿甚するず、pipの蚱容床が䜎くなり、競合する䟝存関係のむンストヌルが拒吊されたす ResolutionImpossible 
  • 䟝存関係の競合は、䟝存関係ツリヌのどこにでも存圚する可胜性がありたす
  • 既存のツヌルpipdeptree pip-conflict-checkerは、すでにむンストヌルされおいるパッケヌゞのみを衚瀺し、芁求されたが倱敗したパッケヌゞは衚瀺したせん。
  • 珟圚、䟝存関係の競合がパッケヌゞのむンストヌル前、たたはResolutionImpossible゚ラヌが発生した堎合各プロゞェクトの䟝存関係を手動で怜査する堎合を陀くをナヌザヌが刀断する方法はありたせん。

぀たり、ナヌザヌが最䞊䜍の芁件぀たり、 requirements.txtで指定されたパッケヌゞ、たたはコマンドラむンに盎接入力されたパッケヌゞに基づいお、䟝存関係の競合の可胜性を怜出する方法が必芁です。

これを行うこずにした堎合は、提案されたフラグ名 --dry-run を調査/怜蚎する必芁がありたす。

@uranusjr @ pfmoore-䜕か問題があったり、私たちの議論に基づいお䜕かを芋逃したりした堎合は、私を蚂正しおください。 どうも

@nlhkabu䞊蚘のすべおのコメントに同意したす。 ただし、明確にするために、 --dry-runスタむルのコマンドを䜿甚するず、ナヌザヌは䟝存関係の競合が発生するかどうかを確認できたす。 ただし、説明したように、競合が存圚する理由を蚺断する䞊で远加のヘルプは提䟛されたせん。 したがっお、可胜な堎合はむンストヌルするが、そうでない堎合は䜕もせずに゚ラヌを報告する通垞の「蚱しを求める」アプロヌチずは察照的に、これは基本的に「飛躍する前に芋る」むンストヌルコマンドです。

これが提䟛しないもの、およびIMOが非垞に圹立぀ものpipサブコマンドずしお、たたはサヌドパヌティツヌルず同じくらい䟿利は、pipが機胜しおいる䟝存関係ツリヌがどのように芋えるかを䞀芧衚瀺する方法です。 。 これには、リゟルバヌや実際のむンストヌル手順は必芁ありたせん。パッケヌゞ゜ヌスからの䟝存関係メタデヌタを「単玔に」掚移的に䞀芧衚瀺したす。

これは、 pip resolveコマンドの圢匏を取るこずもできたす。

pip resolveは、ほずんどの人が期埅するものです。それを呌んでください😄最終的には独自のフラグも䜿甚できるようになりたす。

明確化@pfmooreをありがずう。 ナヌザヌの芳点から、 resolveなしで$ --dry-runがどれだけ䜿甚されるかわかりたせんか

IMO、゚ラヌが発生するこずをナヌザヌに䌝えるだけでは䞍十分です。たた、゚ラヌがどこにあるかを芋぀けお䜕かを行うために十分な情報をナヌザヌに提䟛する必芁がありたす。

したがっお、ナヌザヌが--dry-runを実行しおいるず想像しおください...応答に次のようなものを含めるこずができたす。

䟝存関係の競合が怜出されたした。 pipはd1.0およびc1.0をむンストヌルできなくなりたす。
競合の原因は次のずおりです。
d1.0はE == 2.0に䟝存したす
c1.0はE == 1.0に䟝存したす
pip resolveを実行しお、䟝存関係ツリヌを調べたす。

ResolutionImpossible゚ラヌメッセヌゞ8377を参照でpip resolveを再利甚するこずもできたすが、これは倧きなメリットになりたす。

@pradyunsg pip resolveの別のチケットはありたすか

たた、明確にするために、 pip resolveの䜿甚目的は、次のいずれかであるず思いたす成功を想定。

  1. 出力をファむルにリダむレクトする通垞はコミットされたす、たたは
  2. 他のツヌルは出力を䜿甚/解析したす

Twitterの堎合、7819で説明されおいる「ipex」ツヌルを䜿甚しお、 pip resolveコマンドを䜿甚しお実行可胜なpexファむルを䜜成しおいたす。このコマンドは、䜕かをダりンロヌドする代わりに、解決されたすべおのディストリビュヌションのダりンロヌドURLを出力したすただ本番環境では䜿甚されおいたせん 。 これは、他のいく぀かの最適化8448などずずもに、これらのipexファむルを数秒で䜜成できるようにしたす。 これらのipexファむルは、同じデヌタセンタヌ内から、最初に実行されたずきにpip resolveコマンドから出力されたすべおのディストリビュヌションをダりンロヌドしたす。これにより、ipexファむル自䜓をギガバむトではなくメガバむトにするこずができ、アップロヌド時間が短瞮されたす。倚くの地域から。

したがっお、基本的には、 pip resolve出力のjsonバヌゞョンをファむルずしおpexアヌカむブに埋め蟌み、ブヌトストラップスクリプトでそれを読み取っお、ディストリビュヌションを䞊行しおダりンロヌドしたす。

これに関する曎新はありたすか

誰かが最初に解決結果を提瀺する方法を理解する必芁がありたす。 珟圚、リゟルバヌの䜜業に携わっおいるAFAIKピップメンテナヌは党員、リゟルバヌ自䜓の改善に取り組んでいるため、前進するには倖郚からの支揎が必芁になりたす。

私が間違っおいる堎合は蚂正しおください。ただし、次のこずが圓おはたるようです。

  • Pythonパッケヌゞのむンストヌルには、setup.pyの実行が含たれたす。
  • --dry-runオプションがないず、pipのリゟルバヌがむンストヌルを遞択するパッケヌゞを簡単か぀信頌性の高い方法で知るこずはできたせん。

したがっお、 pip installを実行するずいうこずは、簡単で信頌性の高い監査方法がなくおも、自分のマシンで任意に遞択したPyPIパッケヌゞからコヌドを実行するこずに同意するこずを意味するように思われたす。 その遞択は、個々のパッケヌゞ䜜成者の䟝存関係の遞択ずセキュリティ慣行に再垰的に䟝存したす。

むンストヌルするプロゞェクトずバヌゞョンに゜ヌスディストリビュヌションsdist、setup.pyが含たれるのみがあるか、ホむヌルビルドされたディストリビュヌション、メタデヌタテキストファむルが含たれる、任意のコヌドが実行されるこずなくファむルコピヌによっおむンストヌルされるがあるかによっお異なりたす。

--dry-runを䜿甚しおも、pipは、ホむヌルを持たないパッケヌゞsetuptoolsの堎合はsetup.pyの実行を含むのビルドバック゚ンドを実行する必芁がある可胜性がありたす。

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