粗大メモ置き場

個人用,たまーに来訪者を意識する雑記メモ

jupyter notebookをmatlabで使う / Google Driveにnotebookを保存

ポ○ットモンスター 金/銀 みたいなタイトルですが、iPythonのセットアップについてです。
難易度はそこそこある気がします。なみのり」を覚えてから来てください。

前提:Python環境

私の環境ではとりあえずWindowsでやるつもりでいます。
一連のパッケージ環境を整えるにはanacondaもしくはminicondaを使うのが良いでしょう。


あと、GitHubの一部コマンドが必要なので適当に調べて入れておきましょう。
例えばここを見るとか。
私家版 Git For Windowsのインストール手順 | OPC Diary

Anacondaを使う場合(簡単・ストレージを割りと食う)

Anacondaは一連のPython関連の便利パッケージを落としてくれるのでPythonに今後お世話になる気のある人はこちらを使いましょう。
デフォルトで2Gくらい容量持って行かれるので注意。

下の記事を参照。
ossyaritoori.hatenablog.com

画像関係に興味がある方はこちらの記事も踏んでおいたほうがいいですが、まぁ後からできるので無理にすることはないです。
ossyaritoori.hatenablog.com

Minicondaを使う(ストレージを沢山消費したくない人向け)

先ほどのAnacondaの機能絞った板がこちらです。
Miniconda — Conda
Pythonとcondaのパッケージ管理だけなので数百Mの容量で済むはず(試してない)

どのみちやることは同じです。

注意書き

jupyter in matlab
今のところmatlab2014b以降,対応するPythonのバージョンもmatlabのバージョンに依存するようです。

jupyter notebookをmatlabで使う

以下の参考サイトに準拠してすすめます。
Matlab-based IPython notebooks | Anne Urai
GitHub - Calysto/matlab_kernel: Jupyter Kernel for Matlab
Install MATLAB Engine API for Python - MATLAB & Simulink

0.Python(仮想) 環境構築

MatlabのバージョンごとにPythonの対応するバージョンが違います。

現状2015a,bでPython2.7系とPython3.3,3.4
現状2017bではじめてPython3.5がサポートされます。

これは
「C:\Program Files\MATLAB\R20XXa\extern\engines\python」にあるsetup.pyというファイルを覗けばわかります。

バージョンとか何も考えずに次に行きたい!という方はAnacondaのダウンロードの際に2.7を選択すると良いです。
ただ,今後継続してPythonを使う人は3.X系のほうが良いかもしれないです(バージョンごとに微妙に文法が違う)


次に仮想環境の構築についてです。
私の2015bの場合はPython3.4までが対応ですのでAnacondaの現在の3.6と噛み合いません。

ということで仮想環境を立てます。

conda create -n matlab python=3.4

次に,デフォルトではipythonが入っていないので

activate matlab
conda install jupyter notebook

とうちます。多分合ってると思うけどドチャクソ容量持って行かれますねこれ。
追跡したらAppdataの中を1Gくらい占拠していました。空き容量には余裕をもってください。


1.Matlab engineのインストール

anacondaから使いたい環境を選んでactivateしておいてください。(activateの単語に身に覚えのない人は気にせずanacondapromptを起動しましょう)
この際管理者権限でプログラムを実行したほうが良いです。

WindowsのHomeボタンで「AnacondaPrompt」とサーチして出てきたアイコンを右クリック&「管理者権限で実行」を選択しましょう。



以下を実行してください。2014以前のバージョンにはこのsetup.pyが含まれていません。中身書き換えて移せばなんとかなるんじゃね?なりませんでした。

cd "matlabroot\extern\engines\python"
python setup.py install

matlabbootはmatlabがおいてあるPathです。
頑張って探してください。参考までに私のは以下のような感じです。(なおバージョンが古くてなかった模様)
C:\Program Files\MATLAB\R2007b\
上手くいったら2へとすすんでください。


エラーが出たら?
  • Pythonのバージョン云々言われたら仮想環境の設定を確認してください。

きちんとactivate matlabってやって仮想環境入ってます?ダメなら先ほどの章を確認。

  • その後厄介なのが管理者権限が無いことでおきるエラー

以下のようなエラーが出る事があると思います。

error: could not create 'build': アクセスが拒否されました。

Error Installing MATLAB engine API for Python - MATLAB Answers - MATLAB Central

ということでコマンドプロンプトを管理者権限で実行してください。
setup.pyがあるフォルダまで移動して,次のようにうちます。

"C:\Users\__USER__\AppData\Local\conda\conda\envs\matlab\python.exe" setup.py install

めっちゃ長いのはさっきの仮想環境のPythonのFullPathです。
__USER__には自分のユーザ名を入れてください。というか一度ちゃんと探すと良いでしょう。

  • うまくいくとこんな感じ?

最後の行でエラーって出てなければ多分上手く行ってると思います。
f:id:ossyaritoori:20170921100639p:plainなんだこれは戦後の教科書か。

2.必要パッケージのインストール

その後、自分の環境で以下のコマンドをうってください。

pip install matlab_kernel
python -m matlab_kernel install

動作確認

一旦コンソールを落とすか、bash_profileを読み直して

jupyter notebook

と起動しましょう。

右上のNewをクリックしてmatlabが選択肢に出ればOK。
f:id:ossyaritoori:20170920062406p:plain

起動にやや時間がかかるもののこの通り。
f:id:ossyaritoori:20170921094510p:plain

トータルで4G近く容量を追加で消費したと思われるのでそこだけちょっと残念ですがこれは快適。
ぜひ使ってみてください。

jupyter notebook を GoogleDrive上で扱う。

GitHubでソース管理するのもいいけどGoogleDriveにもおいておきたい!という方のために、拡張プラグインが開発されています。
github.com
日本語記事もこちらに。
jupyter-driveを使ってみる

インストール

これだけ。

git clone https://github.com/jupyter/jupyter-drive.git
pip install -e jupyter-drive

起動

複数やり方はありますが、以下のように設定するのがおすすめ。

python -m jupyterdrive --mixed

下のような画面になりました。
f:id:ossyaritoori:20170920055534p:plain

localをクリックするとlocalのフォルダへ、gdriveを選択するとGoogleDriveへのアクセス許可を求められます。



Matlabが古いけど無理やりでもこの機能を試したい!

結論上手く行ってませんので諦めて新しいバージョンのmatlabに課金してください。

以上が「通常の手法」です。
matlabpython,ipythonのバージョンが合わなかったりするととたんに闇のゲームへと突入します。
ちょっと調べただけでもうげぇとなるようなケースがちらほら。
anaconda3-4.2.0 (Python3.5.2) 環境で Jupyter Notebook 上で MATLAB R2017a API の使用ができないのはなぜですか? - MATLAB Answers - MATLAB Central

matlab live editorという逃げの1手

わりかし似たような事ができるものとしてLive editorというものがあるようですが...
www.mathworks.com
これで勘弁してくれないですかね。

さぁ、闇のゲームだ!

f:id:ossyaritoori:20170920081158p:plain
例えば強制的にengine以下のフォルダを持ってきてpythonスクリプトを修正して発動してしまうのはどうでしょう?

只今奮闘中...

追記:敗北しました。古いmatlabのバージョンでは騙せなさそう...
f:id:ossyaritoori:20170920073844p:plain

さらに追記:
setup.pyをいじってバージョン違いでもエラーを出さないように加工してもやはり最後に以下のようなエラーが出ます。
諦メロン
f:id:ossyaritoori:20170923153125p:plain

第二ラウンドだ!

Jupyter: Matlab Kernel Dies · Issue #22 · Calysto/matlab_kernel · GitHub
以下のコマンドを導入...

pip install metakernel
pip install pymatbridge

追記:敗北しました。ていうかどこかしこを探しても無理って言ってますね。公式に楯突くのはやめておきましょう。

f:id:ossyaritoori:20170920081313p:plain