Python

【Python】AnacondaにTensowflowをインストールする方法


AnacondaにTensowflowをインストールする

AnacondaにTensowflowをインストールしようとしてかなり苦戦したので(結局丸1日以上かかった)、どんな手順でやったら成功したのか、ということについて書いていこうと思う。

なおTensorflowの入れ方としては、元からある環境(「base」という名前)に直接入れるのではなく、Tensorflowのインストール用に専用の仮想環境を作って、そこに入れるようにする
(環境を分けるのが一般的なやり方の様子)

結論としては

  • 綺麗な状態のAnacondaに入れないと原因不明のエラーになったり思ったように動いてくれないので、なるべく綺麗な状態のAnacondaにインストールする

ということに尽きる。
(Anacondaの構造に詳しくない人の場合は……)

ただここで1点注意したいのは、
「綺麗な状態を作るためにAnacondaをWindowsのシステムのアンインストールを使ってアンインストールしても、場合によってはいろいろと残骸が残ったままになる」
ということだ。

例えば自分の場合、新しく作ったAnacondaの環境にpipが入っていなかったので
conda install pip
でインストールし、その後、AnacondaをWindowのシステムを使ってアンインストールしたが、pipは残ったままだった。

この他にもpipでインストールしたパッケージや、過去にAnacondaやPythonをインストール&アンインストールしたようなことがあると、その辺のファイルは残ったままになっている可能性があり、その辺りも私のようにAnacondaに詳しくない人間にとっては結構な混乱の原因となった。

(自分の場合、Windowsのとある ユーザーとしてAnacondaとTensorflowをインストールした際は、Anacondaの仮想環境でも当たり前のようにpipが使えたのだが、別のユーザーとしてやった際には仮想環境でpipが使えず、この対応だけで30分くらいかかってしまった……)

AnacondaにTensowflowをインストールする手順①

さて順番をざっくり書くと以下の通り。

  1. Anacondaで仮想環境を作る
  2. 作成した仮想環境をアクティベートする
  3. Tensorflowをインストールする
  4. インストールしたTensorflowをJupyter Notebookに登録する
    (これをしないと、Tensorflowをインストールし、コマンドライン上ではTensorflowを認識するようになっても、Jupyter Notebookでは認識しない、という状態になる)

多分、真っ新なPCに初めてAnacondaをインストールし、上記の手順を踏むなら簡単に終わるのだろうが、自分の場合そうではなかったので、原因不明のエラーに次ぐエラーに悩まされることになったわけなのだが……。

AnacondaにTensowflowをインストールする手順②(詳細)

ざっくりとした手順は先ほど書いたとおりだが、具体的にどんな風に作業をすればいいのか以下に書く。

なお、以下のmyenvは新しい環境の名前なので、適宜、自分が作る環境の名前に入れ替えてほしい。

①Anacondaに新しい環境を作る
conda create --name myenv

 

②自分の場合「condaのバージョンが古い」と出たので、以下のコマンドで conda 自体をアップグレードした
(多分必須ではない)
conda update -n base -c defaults conda

 

③ ①で作成した新しい環境を有効にする
conda activate myenv

 

④Tensorflowをインストールする
conda install tensorflow

なお、Tensorflowのインストールについては、pip コマンドを使って行う方法を紹介している記事が多いが、conda コマンドでも問題なくインストールできる
conda と pip は別体系であり、できるだけ混ぜて使わない方がよいので(※)、conda コマンドでインストールした方が(多分)良い。

※Pythonには外部パッケージインストール用のコマンドとして「pip」があるが、Anacondaには同様のものとして「conda」がある。
同じようなパッケージインストール用のコマンドだが、それぞれ純粋なPython用、Anacondaというディストリビューション用と異なっているので、両者をごちゃごちゃに混ぜて使うと環境が思ったように構築されないことが多々ある様子。
ということで、pipならpipのみ、condaならcondaのみを使うようにした方が良い(らしい)。

 

④新しく作成した環境に ipykernel をインストールする
conda install ipykernel

ipykernel というのは iPython Kernel の略。
そもそも iPython とは何か?だが、

IPythonとは対話形式でコードを実行でき、様々な便利な機能を備えたインタプリタを利用可能にするライブラリです。Pythonの標準で利用できるインタプリタシェルをより強力に拡張しています。

【Python】IPythonとは:インストールや使用方法、Jupyter Notebookとの関係」 より

で、iPython Kernel というのは、Jupyter Notebook で Python を使う際にバックで動くプログラムのこと(参照)。これがないとJupyter上でPythonを使うことができない。

iPython KernelはAnacondaをインストールした際に自動的に作られる環境(「base」)には当然インストールされているが、新しく作った環境には入っていないので、上記のように別途インストールする必要がある。

 

⑤新しく作成した環境をJupyter Notebookに認識させる
python -m ipykernel install --user --name myenv --display-name "Python (myenv)"

display-name の引数として "Python (myenv)" としているが、Pythonと付けずに単に"tf"等でもよい。

この引数の値(文字列)が Jupyter Notebook で選択できる環境として表示される。具体的には以下のような感じ。

(上の画像では--display-name を Python (tf) として設定している)

私がドハマりしたポイントの一つがここだった。

UdemyのDeep Learningの動画を見てインストール作業を行ったのだが、その動画では⑤が抜けていて、何度Jupyter Notebookを立ち上げても新しく作った環境が表示されなかった。おそらくその動画が作られた頃は、⑤の作業が不要だったのだろう。

①~⑤を行い、Jupyter Notebookを立ち上げ直せば、新しく作成した環境をJupyter上で選択できるようになっているはずだ。

もしできなかった場合だが、いろいろな理由が考えられ、Anacondaに詳しくない人がその理由を特定するのはかなり困難だと思う。

一度Anacondaや過去に入れたPython環境をアンインストールし、できるだけ綺麗な状態からやり直した方が早い。

補足

  • 仮想環境を作成した時点では、その仮想環境の中身は空っぽである。例えばpipやjupyter等も入っていない。
  • ただし、過去に同じ名前で仮想環境を作成したことがあり、pip等をインストールしているとそれは残っている。(これはAnacondaのアンインストールでは消えない)