1. はじめに
普段、ディープラーニング関係はPyCharm上で、csvファイルのデータの集計などはJuypter Notebook上で今までほぼ不自由なく、仮想環境のことなどはあまり深く考えず使ってきたのですが、Jupyter Notebook上でもtensorflowを使ってみようと思い、色々調べたことをメモしておきます。
OSはWindowsです。
Anacondaはインストール済みという前提です。
間違いや追記したほうがいい内容があればご指摘いただければ幸いです。
2. Anacondaプロンプト
Anacondaをインストールすると、Anacondaプロンプトが使用できるようになります。Anaconda Navigatorというのもありますが、起動が遅いので私はあまり使っていません。なので、Anacondaプロンプトが起点になっています。
Anacondaプロンプトでできることは
- Pythonインタプリタの起動
-
condaコマンドの使用
- Anaconda仮想環境の操作
- パッケージの操作 (pipは使わないほうがいい)
- Jupyter Notebookの起動
- TensorBoardの起動
などです。
Windowsではコマンドプロンプトがありますが、AnacondaプロンプトはコマンドプロンプトにAnacondaの環境変数がセットされたものです。コマンドプロンプトで使うcdやdirはAnacondaプロンプトでも使用できます。
3. Anaconda仮想環境
Pythonでは仮想環境というものが使えます。Python標準の仮想環境はvenvというもののようですが、Anacondaをインストールした場合にはAnaconda仮想環境というものを使用します。
Pythonではまず仮想環境を作って、その中に必要なパッケージをインストールしていくことになります。仮想環境を使いこなすことで、プロジェクト毎に必要なパッケージを必要なバージョンのまま保っておくことができます。
- Pythonインタプリタ自体も仮想環境にインストールされているパッケージの一つで、仮想環境毎に異なるバージョンのPythonを使用することもできます。
- Jupyter Notebookを使用する場合、仮想環境の下にjupyterパッケージがインストールされている必要があります。
4. condaコマンドによる仮想環境の操作
-
conda env list
- Anaconda仮想環境の一覧
- これにより、Anaconda仮想環境の実体がどこにあるのかも表示される
- 現在Activate中の仮想環境に*がつく
- conda info -eでも同じ
-
conda activate [name]
- 仮想環境に入る
-
conda deactivate
- 仮想環境を抜ける
-
conda create -n [name] python=3.6
- 新しい仮想環境を作る
-
conda create -n [new name] --clone [existing name]
- 既存の仮想環境をコピーして新規に仮想環境を作る
-
conda remove -n [name] --all
- 仮想環境を削除
5. condaコマンドによるパッケージの操作
パッケージはよくpipでインストールしたりするようですが、Anacondaがインストールされている場合、pipは極力使わないほうがいいようです。(ここを参照)
-
conda list
- 現在Activate中の仮想環境にインストール済みのパッケージの一覧
-
conda list -n [name]
- 現在Activate中ではなく、[名前]で指定した仮想環境にインストール済みのパッケージの一覧
-
conda install [name]
- パッケージのインストール
-
conda install [name] ==x.x.x
- パッケージのインストール(バージョン指定)
-
conda uninstall [name]
- パッケージのアンインストール
-
conda update --all
- 現在Activate中の仮想環境のすべてのパッケージを更新
-
conda update [name]
- パッケージを指定して更新
6. その他のcondaコマンド
-
conda --version
- condaコマンドのバージョンを調べる
-
conda update -n base conda
- condaのバージョンを更新
7. Jupyter Notebook
通常、Pythonでコードを描くとき、AnacondaプロンプトからPythonインタプリタを起動して作業することはあまりしないと思います。もっと使いやすいJupyter NotebookやPyCharmなどのIDEを使用すると思います。
- Jupyter NotebookはAnacondaプロンプトで
jupyter notebook
で起動し、CTRL+C
で終了します。
- Jupyter NotebookではWebアプリとしてのインターフェースの裏側でIPythonカーネルが動いており、IPythonカーネルがPythonインタプリタとJupyterインターフェースの橋渡しをしている関係になっています。
- IPythonカーネルのほかにIRubyなどが使えるようです。
- Jupyter Notebook上では
!conda env list
というように先頭に!を付けてAnacondaプロンプト(シェル)上での操作をJupyter Notebook上でできます。 - またJupyter Notebook上で
%pwd
というように先頭に%を付けてマジックコマンドを実行できます。 - マジックコマンドはIPythonカーネルが提供する機能です。
8. Jupyter Notebookで仮想環境を切り替えられるようにする
Jupyter NotebookはAnacondaをインストールしたままの状態では仮想環境の切り替えができないので、これができるようにします。
大まかな手順は
- environment_kernelsをインストール
- jupyter configファイルを生成
- jupyter configファイルに仮想環境を読み込む設定を追記
なお、わざわざenvironment_kernelsをインストールしなくても、シェルの機能を使って!conda activate test_env
などとすれば仮想環境が切り替わるような気がしますが、うまくいきませんでした。
Jupyter Notebookで仮想環境を使うためには、その仮想環境にjupyterパッケージがインストールされている必要があります。
8.1 environment_kernelsのインストール
上に書いたように、Anacondaを使用する場合はパッケージのインストールにはpipではなくcondaコマンドを使用したほうがいいのですが、condaでenvironment_kernelsをインストールしようとすると「(Anaconda社のリポジトリに)パッケージが見つからない」というようなエラーが出ました。
仕方ないので私はpipでインストールしました。
サンプルコード(プロキシ通過)
pipでインストールするときはプロキシ情報をいちいち記述する必要があります。
- ユーザー名:yaki
- パスワード:sobamilk
- プロキシアドレス:yaki.soba.milk.com
- プロキシポート番号:8080
(base) C:\... >pip install environment_kernels --proxy=http://yaki:sobamilk@yaki.soba.milk.com:8080/
8.2 jupyter configファイルの生成
フォルダC:\Users\user_name\.jupyter
の下にjupyter_notebook_config.pyというファイルがなければ、Anacondaプロンプトから次の操作でデフォルトのjupyter configファイルを生成します。
(base) C:\... >jupyter notebook --generate-config
8.3 jupyter configファイルに仮想環境を読み込む設定を追記
生成されたjupyter_notebook_config.pyは全行コメントアウトされています。
末尾に次の行を追加します。
c.NotebookApp.kernel_spec_manager_class = 'environment_kernels.EnvironmentKernelSpecManager'
c.EnvironmentKernelSpecManager.conda_env_dirs = [ 'C:/Users/user_name/AppData/Local/Continuum/anaconda3/' ]
- 上の行は不要というサイトがあったりしますが、私の場合は必要でした。
- 下の行の[]内はAnaconda仮想環境が集まっているフォルダを指定します。
- jupyter_notebook_config.pyファイルは.pyファイルとなっているので、ファイルパスの区切り文字が¥だとダメ。
また、このjupyter_notebook_config.pyを編集することでJupyter Notebookの作業フォルダを変更したり、その他いろいろカスタマイズできる模様。
以上でJupyter NotebookのKernel -> Change kernelから仮想環境が選択できるようになります。
9. PyCharm
- PyCharmではFile -> Settingsで出てくるウィンドウのProject Interpreterから作成済みのAnaconda仮想環境を指定できます。
- PyCharm上でもJupyter Notebookは使用できるようです(ここを参照)が、IPython NotebookサーバーのURLの指定がうまくいかないせいか、使えませんでした。時間のある時にまた試してみたいと思います。
10. Anaconda仮想環境をJupyterLabで使う(210702追記)
conda仮想環境をつくり、JupyterLabのカーネル切替でそれを選択する手順を追記します。
AnacondaPromptで仮想環境を作る
test_envという名前の仮想環境を作ります。このときjupyterlabも記述しておくと後で使用するipythonやipykernelもインストールされるので便利です。
conda create -n test_env python=3.8 jupyterlab # 仮想環境を作成
conda env list # 追加された仮想環境を確認できる
作った仮想環境に入り、Jupyterカーネルに追加する
activate test_env
仮想環境をカーネルに追加するには下記の2通りがあるようですが、どちらでもいいようです。
ipython kernel install --user --name=test_env --display-name=test_env
python -m ipykernel install --user test_env --display-name test_env
追加したカーネルは
jupyter kernelspec list
で確認できます。このときJupyterカーネルの実体のあるフォルダが表示されますが、そのフォルダの直下にkernel.jsonというファイルがあり、このファイルの中にAnaconda仮想環境へのリンクが記入されています。このファイルが何らかの理由で正しく作られれないとエラーを出す場合があるようです。(私の場合は正常に作られてました)
通常は以上でJupyterLabから仮想環境を利用できるはずですが、最近、同じことをやってみても、JupyterLabで仮想環境を切り替えることはできるけど、しばらくすると勝手にNo Kernelに切り替わってしまい、コードセルの実行もできない症状に見舞われました。
pyzmqを更新する
色々調べたところ、仮想環境を作ったときにインストールされるpyzmqというモジュールに問題があるようです。pyzmqのバージョンが20だと上記のような症状になるようで、私の場合、conda-forgeでpyzmqをインストールすることでバージョン22が入り、正常に動作するようになりました。
conda install -c conda-forge pyzmq # pyzmqを更新する
conda list pyzmq
# Name Version Build Channel
pyzmq 22.0.3 py36hb0157bd_0 conda-forge