Androidスマートフォンアプリ「Termux」でPythonプログラムを書く方法と、Ivon個人の経験を少し共有します。
AndroidスマートフォンでPythonを書くためのアプリは、使いにくいものが少なくありません。純pythonで書かれたパッケージしかインストールできず、wheelに出くわすと止まってしまいます。おそらく目的は、本格的なPython開発環境を作ることではなく、Duolingoのように初心者が練習する場に近いのでしょう。
その中で、Termuxだけは進化を続けています。pip installは今でも通常のLinux環境と100%同じようには動きませんが、Termux専用にコンパイルされたパッケージは増えています。Termuxが提供するPythonパッケージを使えば、簡単な
Pythonプログラムを動かし、スマートフォン内のファイルを処理できます。Root権限は不要です。
たとえば、pipでPillowをインストールし、写真のEXIF情報を一括処理する小さなプログラムを書くことができます。スマートフォンのDCIMフォルダ内の全写真を読み込み、EXIF情報に基づいて写真上に日付を印字し、別のフォルダへ出力します。(このプログラムは実際に使えます。ソースコードはこちら)

また、Pythonで書かれたterm-imageを使い、スマートフォン内の画像をターミナルに表示することもできます。

1. テキストだけか、グラフィカル画面か?#
Termuxは標準ではテキスト画面のターミナルエミュレータです。Pythonプログラムを実行するにはコマンドを入力します。Termux X11を使えばグラフィカル画面も動かせますが、本当に必要でしょうか?
テキスト中心のPythonプログラムは、数値計算、星印の出力、ファイルの一括処理、ファイルのダウンロードなど、プレーンテキストの内容だけを出力します。テキスト画面でプログラムを書くには、VimまたはEmacsで編集する方法を覚える必要があります。これはテキストエディタの操作を練習するよい機会です。
グラフィカル画面なら、ウィンドウ表示やグラフ描画が必要なPythonプログラムを動かせます。グラフィカル画面でコードを書く選択肢は多く、VS CodeやJupyter Notebookもありますが、スマートフォンのリソースをより多く消費します。
グラフィカル画面は必須ではありません。小さなプログラムを書くだけなら、IDEを使う必要はなく、Vimで十分です。
この記事ではテキスト環境を中心に、グラフィカル環境を次点として扱います。
2. TermuxでPythonを動かすか、proot-distroで動かすか?#
PythonはTermuxで直接動かすことも、proot-distroでDebian環境を作成してからその中で動かすこともできます。
この2つは何が違うのでしょうか。TermuxのPythonパッケージはTermux環境向けにコンパイルされたもので、ネイティブ性能で動作します。ただしTermuxは標準的なLinux環境ではないため、一部のPythonパッケージは使えないことがあります。
一方proot-distroはLinuxシステムに近い環境なので、その中でPythonをインストールすると互換性がよくなります。またDebianのパッケージリポジトリには既製のPythonパッケージが多く、pip wheelに依存しなくて済みます。ただしproot-distroの実行性能は遅くなります。
この記事ではTermux環境を中心にします。
3. TermuxにPythonをインストールする方法#
Termuxをインストールします。
Pythonとpipをインストールします。Python-venvモジュールも含まれます。
pkg install python3 python-pip- Pythonのバージョンを確認します。執筆時点では3.12のはずです。
python3 --versionPythonパッケージの実行ファイルの完全なパスは$PREFIX/usr/bin/python3です。
pip installしたパッケージは$PREFIX/lib/python3.xにインストールされます。
Termux Wikiの情報によると、Termuxはローリングリリースなので、pkg upgradeで更新するとPythonも必ず一緒にアップグレードされます。Pythonが次のメジャーバージョンへ上がった後は、pip installしたパッケージを手動で再インストールする必要があります。
4. Pythonバージョンを切り替える#
Termuxはローリングリリース方式のため、最新バージョンのPythonパッケージだけを提供します。パスは$PREFIX/usr/bin/python3です。pip installでインストールしたパッケージも、上記Pythonのバージョンに対応します。
ではPythonバージョンをどう切り替えるのでしょうか。Pythonバージョン管理ツール「uv」にはTermuxパッケージがありますが、機能は正常ではありません。Anacondaをインストールするつもりなら、Termuxへ直接入れるのは難しく、proot-distro内に入れる必要があります。Termux proot-distroにAnacondaをインストールを参照してください。
残る方法は、TUR Repoが提供する古いPythonを使うことです。Termuxのメインリポジトリでは古いPythonを提供できないため、TUR Repoがその不足を補います。
たとえば現在のバージョンがPython 3.12で、古いPython 3.9が必要なら、TUR Repoからインストールします。
pkg install tur-repo
pkg search python3
pkg install python3.9インストール後は、次のパスで実行してください:$PREFIX/usr/bin/python3.9
たとえばpython3 main.pyはpython3.9 main.pyになります。
特定バージョンのPythonパッケージをインストールするには、python3.9 -m pip install <套件名稱>を使います。
異なるバージョンの仮想環境を作成する場合は、python3.9 venv -m venvを使います。
5. pip installのコツ#
通常、Pythonの外部モジュールを使うには、pip installでパッケージをインストールしてから、Pythonプログラム内でモジュールをimportします。
Pythonパッケージをインストールするとき、Termuxのリポジトリにパッケージ化されたもの(通常はpython-*で始まる)があるなら、pkg installでTermuxリポジトリからインストールします。それで無理ならpip installを使います。
Termux環境はPCのLinux環境と完全には同じではないため、pip installではwheelのコンパイルが必要なパッケージで失敗することがあります。そのためTermux開発者がパッケージ化した版を使うのがおすすめです。
たとえばPillowパッケージはTermuxのリポジトリからインストールできます。
pkg install python-pillow古いバージョンのPillowが必要な場合だけ、pip installでのインストールを検討します。
pip install pillow==9.5.06. VimとPythonプラグインをインストール#
テキストエディタVimを、Python編集に適した環境にします。
Vimをインストールします。
pkg install vimVimの基本操作はネットで検索してください。Termuxは画面上に多くのショートカットキーを表示しており、Vimでの入力操作には十分です。
Vim本体には非常に基本的なコードハイライト機能しかなく、Pythonプログラムの編集には少し物足りないかもしれません。そのためプラグインを入れて機能を補強します。
Vimのプラグインは非常に多いです。どれを入れるべきでしょうか。Real Pythonの VIM and Python – A Match Made in Heaven という記事は、とても詳しく説明していると思います。記事内で触れられているVundleパッケージマネージャーも、Termux環境にインストールできます。
ただしYouCompleteMeの自動補完システムを使うには、いくつかpatchを当てる必要があります。How to install YouCompleteMe on Termux by micjabbourを参照してください。
7. 基本的なPythonコマンドライン実行方法#
簡単なPythonプログラムを書き、コマンドで実行して結果を出力する方法を紹介します。
Pythonプログラムがファイルへ書き込む必要がある場合、Termuxのパスの書き方を理解する必要があります。Termuxファイル管理を参照してください。
- プロジェクトディレクトリを作成し、使用するPythonプログラムを同じディレクトリにまとめることをおすすめします。
mkdir project1
cd project1- (任意)ここでPython仮想環境を作成し、システムパッケージから隔離します。
python3 -m venv venv
source ./venv/bin/activate- Pythonプログラムファイルを作成します。
touch main.py- Vimでそのファイルを編集します。
vim main.py- 簡単なHello Worldコードを入力します。
print("Hello World!")- プログラムを実行します。結果が出力されるはずです。
python3 main.py8. グラフィカルIDEでPythonを書く#
ここでの操作にはキーボードとマウスを推奨します。
グラフィカルIDEでプログラムを書けば、コマンド入力の手間を省けます。
グラフィカルIDEといえば、多くの人はVS Codeを思い浮かべるでしょう。残念ながら、Termuxにはcode-serverパッケージしかなく、デスクトップ版VS Codeはありません。
Termuxはcode-serverパッケージを提供しており、スマートフォンのブラウザでWeb版VS Codeを動かせます。ただ、どうせグラフィカル画面を使うなら、Termux X11で完全なXサーバーを動かすほうがよいと思います。そうすればVS Codeを開けるだけでなく、PythonプログラムがPyQTでウィンドウを描画することもできます。
Termuxにはデスクトップ版VS Codeが収録されていないため、proot-distro内にVS Codeをインストールしてからグラフィカル画面を起動するのがおすすめです。
9. proot-distro内でPythonを使う際の注意#
proot-distro loginコマンドを実行すると、Termuxは自身のPATHも一緒にマウントします。そのためpythonコマンドを実行したとき、コンテナ内の版ではなくTermux側の版が実行されることがあります。
どう確認するのでしょうか。which pythonとwhich python3でPythonのパスを確認します。/usr/bin/python3でなければ、Termux側の版を実行しています。
この問題を解決するには、proot-distro内の~/.bashrcに次の内容を追加します。
alias python=/usr/bin/python3
alias python3=/usr/bin/python3
alias pip=/usr/bin/pip
alias pip3=/usr/bin/pip3

