pipの候補不在エラーの対処法
冒頭まとめ pip installで次のエラーが出た場合、pipは指定された要件を満たす配布ファイルを選べていません。 ERROR: Could not find a version that satisfies the requirement demo_probe==99.0 (from versions: 1.0) ERROR: No matching distribution found for demo_probe==99.0 from versions: noneでも、パッケージが公開されていないとは限りません。Pythonの版やOSに合わないファイルが候補から外れた場合、取得先に接続できなかった場合にも、候補が残らないことがあります。 まず、エラーが出た環境で、使っているPythonとpipを確認してください。 python -c "import sys; print(sys.executable); print(sys.version)" python -m pip --version そのうえで、最後の2行より前に出ている接続エラーや候補の除外理由を読みます。名前、版の指定、Pythonへの対応、取得先、OS向けの形式を順に確認すると、直す場所を絞れます。 エラーの意味とfrom versionsの読み方 pipは、取得先から見つけたファイルをすべてインストール候補にするわけではありません。候補選択の公式文書では、リンクから候補を作る段階で、ファイル形式やPythonへの対応などを評価すると説明しています。 pip 26.2.1の実装でも、wheelの対応条件やRequires-Pythonに合わないリンクを除外しています。wheelは、インストール用に用意された.whl形式の配布ファイルです。 そのため、from versionsはPyPIに公開された全バージョンの一覧ではありません。 表示 分かること それだけでは分からないこと from versions: none 表示対象の候補が残っていない パッケージ自体が存在しないのか、環境や取得先の問題なのか from versions: 1.0, 2.0 その版の候補は見つかっている 指定した版や依存関係を満たしてインストールできるか pip 26.2.1の診断処理は、候補の版を集めて一覧を作り、一覧が空ならnoneを表示します。Python要件で除外した版があれば、その案内を先に出す処理もあります。Python要件の不一致が別の診断として出る場合もあり、エラーが常にこの2行になるわけではありません。 冒頭の出力は、CPython 3.12.14とpip 26.2.1で、ローカルに作成した検証用wheelを使って再現したものです。demo_probeは説明用の名前で、PyPIから取得したパッケージではありません。1.0だけがある場所で99.0を要求すると、候補一覧には1.0が出てもインストールには進めませんでした。 パッケージ名とバージョン指定を確認する エラーに出た名前を、利用するライブラリの公式インストール手順と照合します。Pythonのimportに書く名前と、pipに渡す配布名は一致するとは限りません。PyPAの公式ガイドには、PillowをインストールしてPILを読み込む例が示されています。 標準ライブラリを、外部パッケージとしてインストールしようとしていないかも確認してください。知らない名前を別のパッケージに置き換える前に、プロジェクトが何を要求しているかを確かめます。 利用中の取得先で見つかる版は、次で確認できます。requestsは調べたい配布名に置き換えてください。 python -m pip index versions requests このコマンドの公式文書は、Pythonやプラットフォームの条件を指定できることも説明しています。表示結果は実行環境やオプションに左右されるため、PyPIにある全配布ファイルの一覧とは区別してください。 ...