🌊

poetryでllama-indexをm1 docker環境にinstallできなくてつらい

2023/10/01に公開

はじめに

結論から言うと、依存ライブラリであるtree-sitter-languagesがaarch64アーキテクチャのmanylinux2014版のwheelファイルを提供していないが原因です。
加えてこのライブラリはソースインポートをサポートしていないので、根本解決はメンテナーに対応するバイナリファイルを作成してもらう他ないです。

追記
該当ライブラリにissueを出したところ、解消してくれました。ありがたいや...

これに該当する記事全然見つからなくて、poetryやllama-indexって意外とまだ使われていないなーと実感しました。

暫定対処

  1. image build時に--platform linux/amd64 を付けてx86アーキテクチャで開発する
    1. ビルドやメモリ使用率がめちゃめちゃ重くなって辛い
  2. pipでinstallする
    1. pip install llama-index なら問題ない 何故?
  3. M1 Macで開発しない

以下備忘録

$ poetry add llama-index
Skipping virtualenv creation, as specified in config file.
Using version ^0.8.37 for llama-index

Updating dependencies
Resolving dependencies... (7.7s)

Writing lock file

Package operations: 53 installs, 0 updates, 0 removals

  • Installing typing-extensions (4.8.0)
  • Installing annotated-types (0.5.0)
  • Installing certifi (2023.7.22)
  • Installing charset-normalizer (3.3.0)
  • Installing frozenlist (1.4.0)
  • Installing idna (3.4)
  • Installing multidict (6.0.4)
  • Installing mypy-extensions (1.0.0)
  • Installing packaging (23.1)
  • Installing pydantic-core (2.10.1)
  • Installing urllib3 (1.26.16)
  • Installing aiosignal (1.3.1)
  • Installing async-timeout (4.0.3)
  • Installing attrs (23.1.0)
  • Installing exceptiongroup (1.1.3)
  • Installing greenlet (2.0.2)
  • Installing jsonpointer (2.4)
  • Installing marshmallow (3.20.1)
  • Installing numpy (1.25.2)
  • Installing pydantic (2.4.2)
  • Installing requests (2.31.0)
  • Installing six (1.16.0)
  • Installing sniffio (1.3.0)
  • Installing yarl (1.9.2)
  • Installing typing-inspect (0.9.0)
  • Installing aiohttp (3.8.5)
  • Installing anyio (3.7.1)
  • Installing click (8.1.7)
  • Installing dataclasses-json (0.6.1)
  • Installing joblib (1.3.2)
  • Installing jsonpatch (1.33)
  • Installing langsmith (0.0.41)
  • Installing numexpr (2.8.7)
  • Installing python-dateutil (2.8.2)
  • Installing pytz (2023.3.post1)
  • Installing pyyaml (6.0.1)
  • Installing regex (2023.8.8)
  • Installing soupsieve (2.5)
  • Installing sqlalchemy (2.0.21)
  • Installing tenacity (8.2.3)
  • Installing tqdm (4.66.1)
  • Installing tree-sitter (0.20.2)
  • Installing tzdata (2023.3)
  • Installing beautifulsoup4 (4.12.2)
  • Installing fsspec (2023.9.2)
  • Installing langchain (0.0.305)
  • Installing nest-asyncio (1.5.8)
  • Installing nltk (3.8.1)
  • Installing openai (0.28.1)
  • Installing pandas (2.1.1)
  • Installing tiktoken (0.5.1)
  • Installing tree-sitter-languages (1.7.0): Failed

  RuntimeError

  Unable to find installation candidates for tree-sitter-languages (1.7.0)

  at /etc/poetry/venv/lib/python3.10/site-packages/poetry/installation/chooser.py:109 in choose_for
      105│
      106│             links.append(link)
      107│
      108│         if not links:
    → 109│             raise RuntimeError(f"Unable to find installation candidates for {package}")
      110│
      111│         # Get the best link
      112│         chosen = max(links, key=lambda link: self._sort_key(package, link))
      113│
$ pip install tree-sitter-languages
ERROR: Could not find a version that satisfies the requirement tree-sitter-languages (from versions: none)
ERROR: No matching distribution found for tree-sitter-languages

Discussion