blog.tmp.tokyo

No Promises Await at Journey's End

続・TensorFlow を Pythonista3 に入れたかったのですが、ダメそうな気がします。

前フリだけで終わってしまった前回の記事を反省しつつ,今回はいきなり本題に入ります。

tomohiko37-i.hatenablog.jp

結論だけ先に書いておくと,現時点で Pythonista3 に TensorFlow を入れて使えるようにはできなかったのでこの先は FF13 のごとく「敗北の物語」です。なぜ FF13 のことなど言い出したかは前回記事をご覧ください。

StaSh のインストール

まずは Pythonista3 上で shell 環境のようなコンソールを扱えるスクリプト StaSh を入れます。

forum.omz-software.com

英語のサイトですが,一言で言えば Pythonista3 のインタプリタのところで,

import requests as r; exec(r.get('http://bit.ly/get-stash').text)

を実行しろ,ということです。

インタプリタを出す

Pythonista3 を起動します。

f:id:tomohiko37_i:20160827182122p:plain

テーマを変更しているので標準の色とは多少異なります。表示されている内容は変わらないと思います。美しい外見ですね。素晴らしいアプリです。インタプリタを表示するには,この画面の右側から左側へスワイプします。

f:id:tomohiko37_i:20160827182250p:plain

まあこれがわからなかったんですけどね。あちこち調べてみたらスワイプすればいいとありました。そうするとインタプリタの画面が出てきます。Ruby などにもありますが,対話型でプログラムを実行することができる環境です。

f:id:tomohiko37_i:20160827182442p:plain

インストールする

この一番下のところに先ほどの 1 行をコピペして実行します。内容を解説しておくと,

import requests as r

Requests という Python で有名な「人間のための HTTP」と謳うライブラリを取り込みます。Requests は Pythonista3 に標準で入ってます。

r.get('http://bit.ly/get-stash').text

は少し書き直すと,

requests = r.get('http://bit.ly/get-stash')
response = requests.text

という感じでしょうか。実は Requests は最近仕事でもちょっと使ったんです。指定した URL に get で投げて,そのレスポンスの内容をテキストで取得しています。最後に exec で囲んでいるので取得したスクリプトを実行するのでしょう。

これを実行すると,

>>> import requests as  r; exec(r.get('http://bit.ly/get-stash').text)
Downloading https://github.com/ywangd/stash/archive/master.zip ...
Unzipping into /private/var/mobile/Containers/Shared/AppGroup/xxxxx/Pythonista3/Documents/site-packages/stash ...
Preparing the folder structure ...
Installation completed.
Please Restart Pythonista and run launch_stash.py under the Home directory to start StaSh.

というメッセージが画面上に流れます。このまま止まってますのでよく読むと「Pythonista を再起動して StaSh を開始するためにホームディレクトリの直下にある launch_stash.py を実行してください」ということのようです。

iPhone/iPad でアプリの再起動はホームボタンを 2 回素早く押してマルチタスキングの画面を出して,Pythonista を上にスワイプします。そしてもう一度 Pythonista を起動します。

f:id:tomohiko37_i:20160827183644p:plain

下から 2 番目に launch_stash.py がいました。

StaSh を起動する

この launch_stash.py をタップすると,

f:id:tomohiko37_i:20160827184011p:plain

スクリプトが表示されます。実行されるわけではありません。この画面はまずスクリプトの編集画面になりますので。この画面で右上の△が右を向いているアイコンをタップすると実行します。

f:id:tomohiko37_i:20160827184109p:plain

起動しました。あとはみんな大好き shell のコンソール画面です。

TensorFlow のインストールを試みる

それでは次に TensorFlow のインストールを試みます。StaSh を起動した状態で,

export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-0.10.0rc0-py3-none-any.whl

を実行してみます。まあこの時点で mac 版しかないんでダメかなという気もしていたのですが。

f:id:tomohiko37_i:20160827184404p:plain

なにやらエラーが。単に環境変数へ設定するだけなんでエラーもひったくれもない気がしたんですが,export コマンドがないと。そうですか。ないんですね。ないんじゃしょうがない。

pip install --upgrade https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-0.10.0rc0-py3-none-any.whl

安易にとりあえず環境変数じゃなくてそのまま URL で書けばいいんじゃね?という結論に。ちなみにこれだと --upgrade オプションがないと怒られたので,最終的に実行したのは,

pip install  https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-0.10.0rc0-py2-none-any.whl

です。

f:id:tomohiko37_i:20160827184749p:plain

ダメだ。

[~/Documents]$ pip install  https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-0.10.0rc0-py2-none-any.whl
Working on URL repository ...
Error: cannot find a valid archive file at url: https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-0.10.0rc0-py2-none-any.whl

Python3 系と 2 系の両方で試してみましたが結果は同じでした。うーん,とりあえず iOS 端末に入れる適当なライブラリが見つからんのかな?実験的に試してみただけなのでとりあえず現時点では諦めました。StaSh を入れることができたので多少は Pythonista についても進展があったので良しとしたいと思います。

さしあたり TensorFlow については引き続き mac で実行しつつ書籍を読み進めます。