poetryでtensorflowをインストールできない・インストールしたのに使えない
概要
poetryでtensorflowをインストールしようとしたら手間取ったのでメモ。
環境
- OS: windows11
- python version: 3.10.5
結論
tensorflow-io-gcs-filesystemをバージョン0.31でインストールした後、tensorflowをバージョン2.10でインストール
poetry add tensorflow-io-gcs-filesystem~=0.31.0 poetry add tensorflow~=2.10.0
経緯
poetry add tensorflow できない
poetry add tensorflow
でインストールしようとすると、以下のエラーに遭遇。
RuntimeError Unable to find installation candidates for tensorflow-io-gcs-filesystem (0.32.0)
このエラーについて、githubにissueが立ってた。
「先にtensorflow-io-gcs-filesystemを0.31.0でインストールしてからtensorflowをインストールすると上手くいくよ」とのことなので、その通りにすると無事インストールはできた。
poetry add tensorflow-io-gcs-filesystem==0.31.0 poetry add tensorflow
インストールしたのに No module named 'tensorflow'
インストールできました。めでたしめでたし…。
と思いきや以下のエラーが。
import tensorflow as tf ModuleNotFoundError: No module named 'tensorflow'
インストールしたはずなのに「モジュールないよ!」エラーが出ています。
pyproject.tomlにtensorflowが追加されているから正常にインストールはできたはず。
本プロジェクトの仮想環境を参照できていることも確認した。
あれ…?
と思って.venv/Lib/site-package
を覗いてみると、tensorflowディレクトリが見当たらない。
tensorflowの周辺ライブラリはインストールされているのに。
ググってみたところこちらもissueが立ってまして、どうもメタデータ関連で問題が起きているようです。
tensorflowの現在の最新バージョンは2.12ですが、2.10であればpoetryで問題なく動くみたいなので改めてバージョン指定してインストール。
poetry add tensorflow-io-gcs-filesystem~=0.31.0 poetry add tensorflow~=2.10.0
これで無事動くようになりました。バージョンは最新のものよりちょっと古いですが…。
プラットフォームに基づく異なるホイール間のメタデータの不一致に起因する…などと書いてあるので、windows以外のosであればpoetryでも正常に最新バージョンがインストールできるのかもしれないです。
余談
ちゃんとパッケージ管理したいのでpyenv+poetry構成にしてますが、pyenv+poetryの環境構築も面倒だしos依存もあるとなると、もうdocker使った方がマシなのかな…。
ただ、pyinstallerで実行ファイル化したいときも多々あり、そうなったときdockerのlinux上でやってるとwindows用にexe化できないのが難点かな?
あと、fastapiでサーバー建てるときport通したりしなきゃいけないのもちょっと面倒かな…。