0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

pip ではインストールできるのに PDM や Poetry でインストールできないときに確認したいこと

Last updated at Posted at 2025-01-26

概要

Vosk など一部の PyPi パッケージは pip ではインストールできるのに PDM や Poetry ではインストールに失敗することがあります。

そのような時に確認すると解決に繋がるかもしれない観点を説明します。

前提・環境情報

  • 前提
    • Vosk のバージョン情報については 2025年1月18日 現在のものです
  • 環境情報
    • pip のバージョン: 23.1.2
    • PDM のバージョン: 2.22.2
    • Poetry のバージョン: 2.0.1

対象者

  • pip や、PDM もしくは Poetry が何かを理解している・利用している
  • とある PyPi のパッケージについて、 pip ではインストールできるのに PDM や Poetry では以下のようなエラーが発生する

↓ PDM でのエラー(抜粋)

pdm.exceptions.CandidateNotFound: No candidate is found for '<PACKAGE_NAME>' that matches the environment or hashes

↓ Poetry でのエラー(抜粋)

Unable to find installation candidates for <PACKAGE_NAME> (<PACKAGE_VERSION>)

結論・要約

当該パッケージの最新版に、ご自身の環境(ホストマシンのOSやOSのアーキテクチャなど)にマッチする Distribution が存在していないことが原因かもしれません。

当該パッケージの PyPi のサイトにアクセスし、 "Download files" ナビゲーション をクリックして、
Distribution の一覧を確認してみましょう。

インストールする際にバージョンを指定しないとき、 pip と PDM (もしくは Poetry) ではバージョン選択の挙動が異なります。

  • pip では、インストールする環境にマッチする最新の Distribution を選択する
  • PDM や Poetry では、最新版のみを見て環境にマッチする Distribution が存在しないと例外を発生させる

詳細説明

私は Vosk をバージョン指定せずに、 macOS にインストールしたとき今回のエラーに遭遇しました。その時のトラブルシューティングに基づいて詳細を説明します。

pip でのインストール

まずは pip で Vosk をインストールします。この時、バージョン を見ると 0.3.34 になっていますね。(当時の最新版は 0.3.45 です)

pip_installation_successes.png

実際、 pip のドキュメントを読むと以下のような記述があり、検索したすべてのソース(PyPiやローカルファイルシステムなど)を確認し、与えられた要件(Python バージョン、依存関係、OS アーキテクチャなど)に基づいて、最適なバージョンを選ぶことが分かります。

pip looks for packages in a number of places: on PyPI (or the index given as --index-url, if not disabled via --no-index),
in the local filesystem, and in any additional repositories specified via --find-links or --extra-index-url.
There is no priority in the locations that are searched.
Rather they are all checked, and the “best” match for the requirements (in terms of version number - see the specification for details) is selected.

引用: pip install -- Finding Package

一方、 PDM や Poetry でインストールすると以下のようにエラーが発生します。そして、 pip と異なり、最新版である 0.3.45 しか見ていないことが分かります。

PDM のインストールエラー

$ pdm add vosk を実行します。 0.3.45 をインストールしようとして「環境やハッシュにマッチするVoskの候補が見つからない」というエラーが出ていますね。

pdm_installation_fails.png

Poetry のインストールエラー

$ poetry add vosk を実行します。PDM と同様に 0.3.45 をインストールしようとして「 vosk (0.3.45) のインストール候補が見つかりません」というエラーが出ていますね。

poetry_installation_fails.png

PyPi で Distribution を確認

ここで、 PyPi のサイトで Distribution を確認してみましょう。

PyPi - vosk 0.3.45 を確認すると以下のように、 macOS に該当する Distribution が見当たりません。

vosk_0345_dist.png

一方、次点で最新である PyPi - vosk 0.3.44 を見てみましょう。

以下のように "Release history" ナビゲーションから閲覧するバージョンを切り替えることができます。

vosk_download_history.png

PyPi - vosk 0.3.44 を確認すると、 macOS に対応するファイル名とタグが見受けられます。
よって、 0.3.44 であればインストールに成功すると考えられます。

vosk_0344_dist.png

解決方法: バージョンを指定して Vosk をインストールする

PDM や Poetry で macOS に Vosk をインストールするとき「環境にマッチしない」という趣旨のエラーが発生するかもしれません。
そのような時は PyPi でご自身の環境にマッチする バージョン を探し、その バージョン を指定するようにインストールすると良いかもしれません。

実際に、以下のコマンドではインストールに成功しました。

pdm add vosk==0.3.44
poetry add vosk==0.3.44
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?