Pip: 複数のパッケージをインストールするときに、Pipは古すぎる依存関係を更新しません

作成日 2019年10月04日  ·  3コメント  ·  ソース: pypa/pip

説明
これは実際に観察されているため(HypothesisWorks / hypothesis#2113)、特定のパッケージについて説明します。最近、 attrs>=16.0へのattrs>=19.2 install_requires依存関係をattrs>=19.2に更新しました。最新バージョンのHypothesisをインストールすると、ユーザーの属性も更新されるという根拠。

  • pip install hypothesisは確かに機能します。
  • pip install pytest hypothesisは、古いバージョンのattrsがまだインストールされていない場合に機能します。

インストールコマンドに複数のパッケージがリストされている場合、すでにインストールされている依存関係の互換性は、リストされている最初のパッケージに対してのみ評価され、それ以降のパッケージについては、依存関係の存在はチェックされますが、バージョンはチェックされないようです。 これは、要件ファイルの使用にも影響します。

予想される行動

インストールするようにリストされている、またはすでに存在している他のパッケージに関係なく、 pip install hypothesisは、互換性のあるパッケージのセットがインストールされるか、エラーメッセージが表示されるはずです-壊れた環境ではありません。

再現する方法

[tox]
skipsdist=True
[testenv]
deps =
    pip
    attrs==19.1.0
commands =
    ## Execute the problematic install command
    # pip install hypothesis  # works
    # pip install hypothesis pytest  # works
    pip install pytest hypothesis  #  fails, as does `pip install attrs hypothesis` !
    # pip install --upgrade pytest hypothesis  # works

    ## Check that the installed packages are compatible
    python -c "import hypothesis"

次に、 tox --recreateを実行して、仮想環境を再作成し、コマンドを実行します。

(そしてpipに取り組んでいるすべての人に感謝します、それは非常に価値があり、非常に感謝しています😍)

dependency resolution auto-locked bug

全てのコメント3件

詳細と簡単な再現に感謝します! とても有難い!

これは基本的に#988です。 簡単な要約として:

  • pipは、すべて大文字でERRORして、メッセージを赤で出力します。
    ERROR: hypothesis 4.38.2 has requirement attrs>=19.2.0, but you'll have attrs 19.1.0 which is incompatible.
  • CIの一部としてpip checkを使用して、pipが愚かなことをしないようにします。
  • これを回避するには、 pip-tools (より良いリゾルバーでピップをラップする)またはpipenvpip-tools )またはpoetry (独自のリゾルバーを持つ)を使用しますピップのリゾルバの癖。

ああ、なるほど! 私は問題の最後の数ページをチェックしましたが、それほど昔のことは何もありません...追加情報がないと思うので、この問題を複製として閉じて幸せですか?

#988の複製として終了します。

このページは役に立ちましたか?
0 / 5 - 0 評価