背景
流行りのTensorflowのチュートリアルをやるよりもグラフィカルに様子を見たかったので、以下のページを参考に進めようとしたら画像を表示するところでトラブルが。。
- TensorFlowのチュートリアルをやってみる(1) http://www.mwsoft.jp/programming/tensor/tutorial_beginners.html
pylabで画像を表示できなかったのをきっかけに環境を見直しました。
備忘録として残します。
ちなみに、画像を表示できなかったのは、単に最後にplt.show()
をしていなかった為なのも原因の一つでした。
環境
Mac OS X El Capitan (10.11)
$ pyenv --version
pyenv 20160509
$ pyenv versions
system
* 2.7.10 (set by /Users/butada/.python-version)
3.4.4
問題点の整理
使用しているpythonがOSのになっていておかしい
pyenvを使っている割にOSと同じPythonを使っていることに気づきました。
$ which python
/usr/local/bin/python
.bash_profileにinitが記載されていなかった
pyenvの構築手順を読み直したところ、
.bash_profileへの記載が不足していました。
eval "$(pyenv init -)" # ここが不足していた
eval "$(pyenv virtualenv-init -)"
2行目は書かれていたが、1行目が書かれていなかった。。
これによって、pipによってインストールされるライブラリは
OSのほうにインストールされてしまっていた。。
backend問題
systemのPythonでないとbackend問題が生じるので、backendをmacosx
からTkAgg
へ変更します。
変更すべきファイルは以下のコマンド実行でわかります。
python -c "import matplotlib;print(matplotlib.matplotlib_fname())"
私の環境では以下のパスにありました。
vi /Users/butada/.pyenv/versions/2.7.10/lib/python2.7/site-packages/matplotlib/mpl-data/matplotlibrc
#backend : macosx # comment out 2017/1/4
backend : TkAgg
動作確認
今回はpyenvが動作せずにmatplotlibはOSの方にインストールされていたので、正しくpyenvを設定した後、matplotlibをインストールする必要がありました。
matplotlibのインストール説明は省略します。
グラフを表示できるかを確認
以下のページのコードを実行して確認しました。
http://qiita.com/saj_kz/items/40dbfbb84dabcd2a9b46
メモ:
ウィンドウを閉じる度に plt.show()
を実行し直せば
ウィンドウが表示されるのかを思ったのですが、
plt.plot(x,y)
からやり直さないとダメでした。
pyenvが動作しているかを確認
以下のように/usr/bin
や/usr/local/bin
ではなくホームディレクトリ配下であればOK。
$ which python
/Users/butada/.pyenv/shims/python
pyenvでPythonバージョンの切り替わるかを確認
pyenvによってpythonバージョンが切り替わることを確認する。
$ mkdir tensorflow
$ cd tensorflow
$ pyenv local 3.4.4
$ python --version
Python 3.4.4
$ pyenv local 2.7.10
$ python --version
Python 2.7.10
$ pyenv local system
$ python --version
Python 2.7.10 # OSにインストール済みのPythonも同じバージョンなので変化がわかりにくいですね。。
それぞれにインストールされているライブラリも確認できます。
$ pyenv local 3.4.4
$ pip list
$ pyenv local 2.7.10
$ pip list
$ pyenv local system
$ sudo pip list # OSのなので、listでは必須ではありませんがinstall時にはsudoが必要。
メモ:
バージョンの切り替え方法は3種類。
- global
- local
- shell
globalはシステム全体ということだったので怖くて試していません。
localはそのディレクトリ配下に反映させます。.python_versionファイルを作成して設定を保存しているようです。
shellはそのshellのセッションにのみ反映させるようです。
ほか、使えそうなコマンド
- pyenv versions
- pyenv install --list
- pyenv install 3.4.4
pyenv local system
システムのデフォルトのPythonに戻るようです。
最後に
pyenvの使い初めがわかんない!とか、virtualenvと同時に使っている時の混乱が生じた時にここに戻って心を落ち着けようと思います。
参考
pyenvでPythonがSystemバージョンから切り替わらない時の対処
http://qiita.com/ta_ta_ta_miya/items/e24394c6b0022405a126
ここのページに書かれていた最後の方の~/.bash_profile
の記載に救われました。pyenvとvirtualenvで環境構築
http://qiita.com/Kodaira_/items/feadfef9add468e3a85b