Closed1

Rye で torch×ChromaDB でパッケージコンフリクトする

HashoryHashory

状態

pyproject.toml
dependencies = [
    "torch==2.4.0+cu121",
    "torchvision==0.19.0+cu121",
    "torchaudio==2.4.0+cu121",
    "langchain-chroma>=0.1.3",
]

[[tool.rye.sources]]
name = "pytorch"
url = "https://download.pytorch.org/whl/cu121"

以下のようなエラーが出る。

> rye sync
Reusing already existing virtualenv
Generating production lockfile: T:\pkg-confrict\requirements.lock
  × No solution found when resolving dependencies:
  ╰─▶ Because only tqdm==4.64.1 is available and chromadb>=0.4.0,<=0.5.3 depends on tqdm>=4.65.0, we can conclude that chromadb>=0.4.0,<=0.5.3 cannot be used.
      And because only the following versions of chromadb are available:
          chromadb<=0.4.0
          chromadb==0.4.1
          [一部省略...]
          chromadb==0.5.3
          chromadb==0.5.4
          chromadb==0.5.5
      and langchain-chroma==0.1.3 depends on chromadb>=0.4.0,<0.5.4, we can conclude that langchain-chroma==0.1.3 cannot be used.
      And because only langchain-chroma<=0.1.3 is available and you require langchain-chroma>=0.1.3, we can conclude that your requirements are unsatisfiable.
error: could not write production lockfile for project

簡単に要約すると、
「ChromaDBは tqdm >= 4.65.0 が必要だが、tqdm == 4.64.1しか提供されていなよ!」ってことです。

ん、なわけと思ったのですが、
torchのためのindexのURL (https://download.pytorch.org/whl/cu121 )には、tqdm == 4.64.1しか提供されていないです。

どうやら、 [[tool.rye.sources]] を指定すると、そのURL先にあるパッケージはURL先からしかダウンロードしてきてくれないみたいです。

解決策

pyproject.toml
 dependencies = [
-    "torch==2.4.0+cu121",
-    "torchvision==0.19.0+cu121",
-    "torchaudio==2.4.0+cu121",
+    "torch @ https://download.pytorch.org/whl/cu121/torch-2.4.0%2Bcu121-cp312-cp312-win_amd64.whl#sha256=b5c27549daf5f3209da6e07607f2bb8d02712555734fcd8cd7a23703a6e7d639",
+    "torchvision @ https://download.pytorch.org/whl/cu121/torchvision-0.19.0%2Bcu121-cp312-cp312-win_amd64.whl#sha256=43c7b72a45360959b518a273b1c217ea5992da39e99b498cea8b19766954513c",
+    "torchaudio @ https://download.pytorch.org/whl/cu121/torchaudio-2.4.0%2Bcu121-cp312-cp312-win_amd64.whl#sha256=215d6753381fefee6df4fe5d70c047652193c72f6ecec1f969d049e0b26fe745",
     "langchain-chroma>=0.1.3",
 ]

-[[tool.rye.sources]]
-name = "pytorch"
-url = "https://download.pytorch.org/whl/cu121"

indexのURL (https://download.pytorch.org/whl/cu121 ) を直接たどってwhlファイルのURLを直接指定します。[[tool.rye.sources]]いりません
記述を書き換えたら rye sync で更新します。

そもそもなのですが torch 自体は tqdmに依存していないようです。(requirements.lockを参照)

なお、rye addコマンドを使用する際は以下のようにします。

rye add torch -url https://download.pytorch.org/whl/cu121/torch-2.4.0%2Bcu121-cp312-cp312-win_amd64.whl#sha256=b5c27549daf5f3209da6e07607f2bb8d02712555734fcd8cd7a23703a6e7d639
このスクラップは27日前にクローズされました