TermuxでPythonプログラミングができるようにしたので有名なライブラリをインストールしてみました。
ライブラリによっては、インストールできないライブラリもあるので、注意が必要です。
環境
スマホ Galaxy S24
内蔵メモリ 8G(グラボはありません)
Androidバージョン14
Termuxのダウンロードや初期設定は、「https://tansunohazama.sakura.ne.jp/wordpress/%e3%82%b9%e3%83%9e%e3%83%9b%e3%82%92web%e3%82%b5%e3%83%bc%e3%83%90%e3%81%ab%e3%81%99%e3%82%8b/」を見てください
Pythonのインストール
次のコマンドでtermuxにpythonをインストールできます。
# 最新バージョンを入手
$ > apt update
$ > apt upgrade
$ > uname -r
6.1.75-android14-11-****
# pythonのインストール
$ > apt install python
:
$ > python -V
Python 3.12.9
$ pip -V
pip 25.0.1 from /data/data/com.termux/files/usr/lib/python3.12/site-packages/pip (python 3.12)
# pipも使えるようになっています
# python用のディレクトリ作成
$ > cd $home
$ > mkdir py # とりあえずpython用フォルダを作っておく
$ > cd py
【問題点】pipによるライブラリのインストールに失敗する
pipを使って、基本的なpythonライブラリである[numpy]をインストールしようとするとエラーが起きます。
$ > pip install numpy
Collecting numpy
Downloading numpy-2.2.4.tar.gz (20.3 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 20.3/20.3 MB 11.6 MB/s eta 0:00:00
Installing build dependencies ... done
Getting requirements to build wheel ... done
Installing backend dependencies ... error
error: subprocess-exited-with-error
× pip subprocess to install backend dependencies did not run successfully.
│ exit code: 1
╰─> [1125 lines of output]
Collecting ninja>=1.8.2
Downloading ninja-1.11.1.3.tar.gz (129 kB)
Installing build dependencies: started
Installing build dependencies: finished with status 'done'
Getting requirements to build wheel: started
Getting requirements to build wheel: finished with status 'done'
:
pipインストールに必要なライブラリが足りなそうなので、関連しているc++モジュールをインストールした後、実行するとnumpyがインストールできました。
エラーの内容から察するには、
ninja,cmake,clang
あたりが不足していたようです。
# ライブラリのインストール
$ > pkg install libffi
$ > pkg install git
$ > pkg install cmake
$ > pkg install ninja
# numpyのインストール
$ > pip install numpy
Collecting numpy
Using cached numpy-2.2.4.tar.gz (20.3 MB)
Installing build dependencies ... done
Getting requirements to build wheel ... done
Preparing metadata (pyproject.toml) ... done
Building wheels for collected packages: numpy
Building wheel for numpy (pyproject.toml) ... done
Created wheel for numpy: filename=numpy-2.2.4-cp312-cp312-linux_aarch64.whl size=6960611 sha256=********************************
Stored in directory: /data/data/com.termux/files/home/.cache/pip/wheels/02/87/cb/************************************************
Successfully built numpy
Installing collected packages: numpy
Successfully installed numpy-2.2.4
トライアンドエラー法でインストール。
動作確認
次のコマンドでnumpyの動作確認を行い、動作することを確認しました。
$ > python -c "import numpy as np; print(np.array([1, 2, 3]))"
[1 2 3]
有名なライブラリのインストール実験
よく使うPythonライブラリがTermuxで使えるか確認しました。
Pandas
Pandasは問題なく実行できました。
$ > pip install pandas
$ > python -c "import pandas as pd; s = pd.Series([1, 3, 5, 7, 9]); print(s)"
0 1
1 3
2 5
3 7
4 9
dtype: int64
Matplotlib
Matplotlibはpillowライブラリがインストールできないので、インストールに失敗しました。
Scikit-learn
scikit-learnは、scipy,gcc-fortran等複数のライブラリがインストールできないので、インストールに失敗します。
Requests
Requestsは、問題なく動作しました。
$ > pip install Requests
$ > python -c "import requests; response = requests.get('https://tansunohazama.sakura.ne.jp/'); print(response.status_code)"
200
※当ページのサーバが生きているか確認しました。
TensorFlow
TensorFlowは、見つかりませんでした。
PyTorch
PyTorchは、インストールに失敗しました。
Flask
Flaskは、正常に動作しました。
$ > pip install flask
$ > nano fla_test.py
# プログラムを入力
$ > python fla_test.py
* Serving Flask app 'fla_test'
* Debug mode: off
WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
* Running on http://127.0.0.1:5000
# コンソール上にアクセスログが表示される
127.0.0.1 - - [17/Mar/2025 15:09:34] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [17/Mar/2025 15:09:38] "GET / HTTP/1.1" 200 -
# 停止するには Ctrl + cを押してください
# fla_test.pyのソース
from flask import Flask
app = Flask(__name__)
@app.route("/") # ルート URL に対応する処理を追加
def hello():
return "Hello, Flask!"
if __name__ == "__main__":
app.run(port=5050)
# app.run() # 指定しなければ5000番になります

Django
Djangoは正常に動作しました。
簡単なプロジェクトテストは次の方法で作成しました。
$ > pip install django
# プロジェクトの作成
$ > django-admin startproject simpleproject
$ > cd simpleproject
$ > python manage.py startapp simpleapp
$ > cd simpleapp
$ > nano views.py
# views.py の編集
$ > cd ..
$ > cd simpleproject
$ > nano nano urls.py
# urls.py の編集
$ > cd ..
$ > python manage.py runserver
Watching for file changes with StatReloader
Performing system checks...
System check identified no issues (0 silenced).
You have 18 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
March 17, 2025 - 06:23:49
Django version 5.1.7, using settings 'simpleproject.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
# 以下にアクセスログが表示される
[17/Mar/2025 06:24:17] "GET / HTTP/1.1" 200 14
Not Found: /favicon.ico
[17/Mar/2025 06:24:17] "GET /favicon.ico HTTP/1.1" 404 2378
[17/Mar/2025 06:24:22] "GET / HTTP/1.1" 200 14
[17/Mar/2025 06:24:23] "GET / HTTP/1.1" 200 14
# views.py のソース
from django.http import HttpResponse
def simple_view(request):
return HttpResponse("Hello, Django!")
# urls.pyのソース
from django.contrib import admin
from django.urls import path
from simpleapp import views
urlpatterns = [
path('admin/', admin.site.urls),
path('', views.simple_view, name='simple_view'),
]
ブラウザから
127.0.0.1:8000
にアクセスした様子。

OpenCV
OpenCVは、見つかりませんでした。
どのポートが開いているか確認することができるのか
Termuxを使ってサーバアプリケーションを実行すると、どのポートが使用中か確認したくなりますが、結論は、確認はできませんでした。
root権限がないと、スマホのポート情報は確認できないようです。
# ssコマンド
$ > ss
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
Cannot open netlink socket: Permission denied
Cannot open netlink socket: Permission denied
Cannot open netlink socket: Permission denied
Cannot open netlink socket: Permission denied
Cannot open netlink socket: Permission denied
Cannot open netlink socket: Permission denied
# netstatコマンド
netstat -ano
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State Timer
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags Type State I-Node Path
感想
pythonを使って代表的なライブラリを確認したところ、画像を扱うライブラリは軒並み動かない感じでしたが、ネットワーク系のライブラリは動作するように感じました。
ネットワークの疎通確認や、APIサーバ、ボットサーバ用途としてなら使えそうな感じですね。
機械学習関係は、私の知識が足らず、必要なライブラリを見つけられていないだけかもしれませんが、動きませんでした。
ollama は動くので、グラボがないと動かないというわけではないと思います。