Python
Android
Termux

AndroidでPythonの実行環境を整える

はじめに

PCを持ち歩かなくてもAndroidでPython(主にjupyter-notebook)を使えたらいいなと思い、タブレットを購入。
jupyter, numpy, pandas, matplotlib, scikit-learnあたりをインストールしてみました。
色々調べながらやった結果、一応使えるようになったのでまとめておきます。

キーボードの設定

Androidでそのままキーボードを使おうとすると、キーボードの配列の設定が違うために、記号などがまともに打てませんでした。
その対策として、Google日本語入力を使います。
Google日本語入力はキーボードの配列情報も一緒にパッケージされているので、これを使って入力の設定をしましょう。

設定方法

Google公式「外部日本語キーボードのレイアウト設定方法」より

  1. Google日本語入力 のアプリをタップします。
  2. [ハードウェアキーボードの設定] をタップして、[システム配列] を選択します。
    注:Android 4.0 (Ice Cream Sandwitch) をご利用の方は、設定を「日本語109A配列」にするとGoogle日本語入力をご利用時に限って日本語キーボードをご利用になれます。
  3. ご利用の端末の [設定] から[言語と入力] をタップします。
  4. [物理キーボード] から、利用するキーボードの機種名をタップします。
    注:濃い灰色部分にはご利用中の機種名が表示されます。
  5. [キーボードレイアウトの設定] をタップします。
  6. [日本語109A配列(Google日本語入力)] をチェックします。

本体

Pythonのインストール

Python本体のインストールはTermuxというアプリを使って行います。
Playストアからインストールするだけで、"pkg", "apt"といったパッケージ管理システムが使えるようになります。
インストールしたら、apt install pythonで、python本体と同時にpipもインストールされます。

Pythonを使うためのライブラリのインストール

あらかじめaptでインストールしておかないといけないパッケージがあるので、インストール

apt install clang python python-dev fftw libzmq libzmq-dev freetype freetype-dev libpng libpng-dev pkg-config

pipのライブラリのインストール

以下のコマンドでインストール

LDFLAGS=" -lm -lcompiler_rt" pip install numpy matplotlib pandas jupyter

numpyのインストールでエラーになってしまう場合、別の方法を試してみる。

numpyをインストール

自分の環境では、pipからnumpyをインストールできなかったので、its-pointlessというaptの拡張っぽいやつからインストールするという方法を取りました。
まず、wgetをインストールする。

apt install wget

次に、its-pointlessをダウンロード&インストール

wget https://its-pointless.github.io/setup-pointless-repo.sh
bash setup-pointless-repo.sh

ここまでできれば、apt install numpyと打つだけで簡単にnumpyがインストールできるようになっているかと思います。

実際に使う

pythonのREPLからmatplotlibのpyplotをインポートすることができず、詰んだかと思いましたが、jupyter-notebookからは普通にインポートできました。
jupyter-notebook上で実際に使ってみたところ、ライブラリを読み込むときにかなり時間がかかったりはするものの、普通に使うことができました。
ですが、動作がもっさりしすぎているので、普段使いはしないと思います(笑)

めでたしめでたし。

参考サイト

外部日本語キーボードのレイアウト設定方法 - 日本語入力 ヘルプ
Running Jupyter and the Scipy stack on Android | Leonardo Uieda
Installing Scipy The Easy Way - Termux Wiki
Package Management - Termux Wiki
【Termux】Android上にPython環境を作成する - Qiita