問題提起
機械学習の勉強のためにAnacondaにTensorflow用の仮想環境を作ろうとしたらTensorflowをインストールできなかった。
実行環境とエラー文
pythonのバージョンは3.13.0
。
叩いたコマンドは以下の通り。
conda install tensorflow
すると以下のようなエラーが発生した。
Channels:
- defaults
Platform: linux-64
Collecting package metadata (repodata.json): done
Solving environment: - warning libmamba Added empty dependency for problem type SOLVER_RULE_UPDATE
failed
LibMambaUnsatisfiableError: Encountered problems while solving:
- nothing provides bleach 1.5.0 needed by tensorboard-1.6.0-py27hf484d3e_0
Could not solve for environment specs
The following packages are incompatible
├─ pin-1 is installable and it requires
│ └─ python 3.13.* , which can be installed;
└─ tensorflow is not installable because there are no viable options
├─ tensorflow [1.10.0|1.11.0|...|2.1.0] would require
│ └─ python 2.7.* , which conflicts with any installable versions previously reported;
├─ tensorflow [1.10.0|1.9.0] would require
│ └─ python 3.5.* , which conflicts with any installable versions previously reported;
├─ tensorflow [1.10.0|1.11.0|...|2.2.0] would require
│ └─ python 3.6.* , which conflicts with any installable versions previously reported;
├─ tensorflow [1.10.0|1.8.0|1.9.0] would require
│ └─ tensorflow-base [==1.10.0 gpu_py27h3435052_0|==1.10.0 gpu_py35h3435052_0|...|==1.9.0 gpu_py36h9f529ab_1], which requires
│ └─ cudatoolkit 8.0.* , which does not exist (perhaps a missing channel);
├─ tensorflow [1.13.1|1.14.0|...|2.9.1] would require
│ └─ python 3.7.* , which conflicts with any installable versions previously reported;
├─ tensorflow [1.4.1|1.5.0|1.6.0|1.7.0] would require
│ ├─ tensorboard [>=1.6.0,<1.7.0 |>=1.7.0,<1.8.0 ] but there are no viable options
│ │ ├─ tensorboard [1.6.0|1.7.0|1.8.0] would require
│ │ │ └─ bleach 1.5.0 , which does not exist (perhaps a missing channel);
│ │ └─ tensorboard [1.6.0|1.7.0] would require
│ │ └─ bleach >=1.5.0,<1.5.1.0a0 , which does not exist (perhaps a missing channel);
│ └─ tensorflow-tensorboard [ |>=1.5.0,<1.6.0 ] but there are no viable options
│ ├─ tensorflow-tensorboard [0.4.0|1.5.1] would require
│ │ └─ bleach 1.5.0 , which does not exist (perhaps a missing channel);
│ └─ tensorflow-tensorboard 1.5.1 would require
│ └─ bleach >=1.5.0,<1.5.1.0a0 , which does not exist (perhaps a missing channel);
├─ tensorflow 1.8.0 would require
│ └─ tensorboard >=1.8.0,<1.9.0 , which cannot be installed (as previously explained);
├─ tensorflow [2.10.0|2.11.0|...|2.9.1] would require
│ └─ python [3.10.* |>=3.10,<3.11.0a0 ], which conflicts with any installable versions previously reported;
├─ tensorflow [2.10.0|2.11.0|...|2.9.1] would require
│ └─ python 3.8.* , which conflicts with any installable versions previously reported;
├─ tensorflow [2.10.0|2.11.0|...|2.9.1] would require
│ └─ python [3.9.* |>=3.9,<3.10.0a0 ], which conflicts with any installable versions previously reported;
├─ tensorflow [2.12.0|2.17.0] would require
│ └─ python [3.11.* |>=3.11,<3.12.0a0 ], which conflicts with any installable versions previously reported;
└─ tensorflow 2.17.0 would require
└─ python >=3.12,<3.13.0a0 , which conflicts with any installable versions previously reported.
ぱっと見だとバージョンの問題が起きていそう...?
解決方法
ChatGPT先生に投げてみた所、以下のような回答がでてきた。
このエラーは、tensorflow の依存関係や Python バージョンに起因するものです。Anaconda 環境において tensorflow をインストールする際には、指定された Python バージョンと互換性のある TensorFlow バージョンを選択する必要があります。
つまりpythonのバージョンが3.13.0
のやつに対応するTensorflowのバージョンがなかったということである。先程の仮説は的を得ていたっぽい。このことを踏まえてエラー文をよく読んで見ればTensorflowのバージョンに対応するpythonのバージョンを出力してくれていることが分かる。エラー文偉い。
さて、以上のことを踏まえて仮想環境を作成するところからやり直した。
まずは仮想環境の構築から。
conda create -n tensorflow_env python=3.9
ここでの肝はpythonのバージョンを指定してあげるところ。今回はChatGPTに言われるがままにpythonのバージョンを3.9.20
で作成したが、Tensorflowがサポートしている3.12
くらいまでなら大丈夫だと思われる (ココらへんは無駄話) 。Tensorflowがどのpythonのバージョンまでをサポートしているかはドキュメントなどで確認するのが良いだろう。
次にTensorflowをインストールする。
conda install tensorflow
するとTensorflowがインストールされる。実際にconda list | grep tensorflow
というコマンドを叩いて確認すると
tensorflow 2.18.0 pypi_0 pypi
tensorflow-io-gcs-filesystem 0.37.1 pypi_0 pypi
と出力され、確かにTensorflowがインストールされていることが分かる。
これでTensorflowをAnacondaの仮想環境にインストールすることができた。やったね!!
最後に
とりあえずなにか問題がおきたらエラー文をみよう。対処方法がわからなくても何が起きているのかくらいは把握しておいたほうが良い。ただChatGPTにまかせるだけよりは良いはずだ。さて、Tensorflowのインストールもできたことだし、私は機械学習の勉強に戻るとしよう。良き機械学習ライフを。
追記
2024/11/10: tensorflowをインストールするときにpip
ではなくconda
を使うようにした。