説明
これは実際に観察されているため(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
に取り組んでいるすべての人に感謝します、それは非常に価値があり、非常に感謝しています😍)
詳細と簡単な再現に感謝します! とても有難い!
これは基本的に#988です。 簡単な要約として:
ERROR
して、メッセージを赤で出力します。
ERROR: hypothesis 4.38.2 has requirement attrs>=19.2.0, but you'll have attrs 19.1.0 which is incompatible.
pip check
を使用して、pipが愚かなことをしないようにします。pip-tools
(より良いリゾルバーでピップをラップする)またはpipenv
( pip-tools
)またはpoetry
(独自のリゾルバーを持つ)を使用しますピップのリゾルバの癖。ああ、なるほど! 私は問題の最後の数ページをチェックしましたが、それほど昔のことは何もありません...追加情報がないと思うので、この問題を複製として閉じて幸せですか?
#988の複製として終了します。