Termux 进阶玩法:手机上的 Python 开发与定时任务

zheng头像
zheng 2026-07-15 17:54
楼主

有了 Termux,Python 能跑,vim 能写,Git 能 push,但总感觉差口气——写代码的体验还是不太对。这一篇不讲基础,直接上干货:怎么在 Termux 里搞出一个接近电脑的开发环境,Python 虚拟环境怎么搞,定时任务怎么跑,以及一些让你「哇这都行」的进阶操作。


一、打造舒适的 Python 开发环境

1.1 虚拟环境(必须)

Termux 里 pip 默认往 $PREFIX 装包,时间长了依赖冲突是迟早的事。老老实实用 venv:

pkg install python -y
mkdir -p ~/projects/myapp
cd ~/projects/myapp
python -m venv .venv
source .venv/bin/activate
pip install flask requests numpy pandas

每次进项目目录记得 source .venv/bin/activate。写个 alias 省事:

echo 'alias va="source .venv/bin/activate"' >> ~/.bashrc

1.2 装个能用的编辑器

手机屏幕敲 vim 可以,但要写大段代码,推荐两个方案:

方案 体验 配置成本
Neovim + 插件 接近电脑 VSCode 高(配 LSP、补全)
code-server(浏览器版 VSCode) 跟 VSCode 一样 中(装完连浏览器)

方案一:Neovim

pkg install neovim -y
pip install pynvim jedi
# 装插件管理器 vim-plug
sh -c 'curl -fLo "${XDG_DATA_HOME:-$HOME/.local/share}"/nvim/site/autoload/plug.vim --create-dirs \
       https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim'

~/.config/nvim/init.vim 最小配置:

call plug#begin()
Plug 'preservim/nerdtree'          " 文件树
Plug 'dense-analysis/ale'          " 语法检查
Plug 'vim-airline/vim-airline'     " 状态栏
call plug#end()

set number
set autoindent
set tabstop=4 shiftwidth=4 expandtab

方案二:code-server(强烈推荐)

Termux 里装 code-server,然后电脑/平板浏览器打开就是完整 VSCode:

pkg install tur-repo -y
pkg install code-server -y
# 设置密码
echo 'bind-addr: 0.0.0.0:8080' > ~/.config/code-server/config.yaml
echo 'auth: password'  >> ~/.config/code-server/config.yaml
echo "password: $(echo -n 'yourpass' | sha256sum | head -c 64)" >> ~/.config/code-server/config.yaml
code-server

同一 WiFi 下,电脑浏览器打开 http://手机IP:8080,输入密码,就是完整版 VSCode——插件市场、终端、调试全都有。手机当服务器 + 电脑当显示器,爽。


二、用 crontab 跑定时任务

Termux 内置了 cron 替代品 termux-services,比原生 cron 更适合 Android 环境。

2.1 安装

pkg install termux-services -y

重启 Termux 后,sv-enable crond 即可激活 cron 服务。

2.2 配置定时任务

crontab -e

几个实用案例:

# 每 2 小时自动拉取最新代码
0 */2 * * * cd ~/projects/mybot && git pull origin main

# 每天早上 8 点发天气通知(通过 termux-notification)
0 8 * * * python ~/scripts/weather.py && termux-notification --title "天气" --content "$(cat /tmp/weather.txt)"

# 每 10 分钟监控服务器状态
*/10 * * * * curl -s https://your-api.com/health || termux-notification --title "服务挂了" --content "赶紧看看"

# 每天凌晨 2 点清理 7 天前的日志
0 2 * * * find ~/logs -name "*.log" -mtime +7 -delete

2.3 写个天气爬虫示例

# ~/scripts/weather.py
import requests

API_KEY = "你的和风天气key"
CITY = "101010100"  # 北京城市代码

url = f"https://devapi.qweather.com/v7/weather/now?location={CITY}&key={API_KEY}"
resp = requests.get(url).json()
text = f"{resp['now']['temp']}°C  {resp['now']['text']}"

with open("/tmp/weather.txt", "w") as f:
    f.write(text)

配合 cron 每天跑一次,再配合 Tasker 抓通知栏内容,起床先看天气。


三、Termux:API —— 让脚本控制手机硬件

Termux:API 是配套插件,装完你的 Python/Bash 脚本就能调用手机传感器、摄像头、短信、通知等功能。

# 安装
pkg install termux-api -y
# 手机上另装 Termux:API APK(跟 Termux 一起在 F-Droid 下)

实用命令速查:

# 发送系统通知
termux-notification --title "任务完成" --content "数据已备份"

# 语音转文字(调用手机语音引擎)
termux-speech-to-text > /tmp/speech.txt

# 文字转语音(让手机读出来)
termux-tts-speak "备份任务执行完毕"

# 获取电池状态
termux-battery-status
# {"health": "GOOD", "percentage": 85, "plugged": "UNPLUGGED", ...}

# 获取 GPS 位置
termux-location

# 打开手电筒
termux-torch on

# 拍照并保存到文件
termux-camera-photo ~/storage/pictures/photo.jpg

# 读取短信收件箱
termux-sms-list -t inbox -l 5

实战:低电量自动发通知

写个脚本,电池低于 20% 弹通知提醒充电:

# ~/scripts/low_battery_alert.sh
#!/bin/bash
PERCENTAGE=$(termux-battery-status | grep percentage | awk -F: '{print $2}' | tr -d ' ,')
if [ "$PERCENTAGE" -lt 20 ]; then
    termux-notification --title "电量低" --content "当前电量 ${PERCENTAGE}%,赶紧充电!"
    termux-tts-speak "电量低于百分之二十,请充电"
fi

crontab 加一条:*/15 * * * * bash ~/scripts/low_battery_alert.sh。每 15 分钟检查一次。


四、Termux:Boot —— 开机自启动

让你的脚本和服务在手机开机时自动跑起来:

  1. Termux:Boot APK(F-Droid 有)
  2. 开机后手动打开一次 Termux 授予自启权限(Android 限制)
  3. 把要启动的脚本放到 ~/.termux/boot/
mkdir -p ~/.termux/boot
cat > ~/.termux/boot/start-sshd << 'EOF'
#!/data/data/com.termux/files/usr/bin/bash
sshd
EOF
chmod +x ~/.termux/boot/start-sshd

这样手机一开机,SSH 服务就自动起来,随时能从电脑连进去。


五、几个 Cool 玩法

5.1 手机当下载机

pkg install aria2 -y
aria2c --enable-rpc --rpc-listen-all --rpc-allow-origin-all -d ~/storage/downloads

电脑浏览器装个 AriaNg 插件,连上手机 IP:6800,远程把磁力链接扔过去,手机后台下载,回家文件已经在手机里了。

5.2 手机当热点 + 轻量 Web 服务器

出差时笔记本连手机热点,手机同时在 Termux 里跑个服务:

cd ~/projects/apidoc
python -m http.server 9090

笔记本浏览器开 http://手机IP:9090,离线看 API 文档,比到处找 WiFi 靠谱。

5.3 用 Python 操作 Android 的 SQLite 数据库

pip install sqlite-utils
import sqlite3

# 读取短信数据库(需要 root 或者通过 content provider)
db = sqlite3.connect("/data/data/com.android.providers.telephony/databases/mmssms.db")
cursor = db.execute("SELECT address, body, date FROM sms ORDER BY date DESC LIMIT 10")
for row in cursor:
    print(row)

短信备份、通话记录分析、应用使用统计——你的手机数据,Python 想怎么玩就怎么玩。


六、常见问题

Q:Termux 里 pip 装包报错怎么办?

多半是缺少编译工具。先把构建依赖装了:

pkg install binutils clang make cmake -y

还是报错的话,有些 Python 包(如 Pillow)在 ARM 上编译需要额外库:

pkg install libjpeg-turbo libpng freetype -y

Q:cron 任务不执行?

  1. 确认服务起来了:sv status crond
  2. 用绝对路径:/data/data/com.termux/files/usr/bin/python 而不是 python
  3. 脚本要有执行权限:chmod +x script.sh

Q:code-server 占用多少内存?

空闲时约 120MB,打开项目后 200-300MB,不重。6GB RAM 的手机完全够用。


Termux 的上限取决于你的想象力。从跑个 Python 脚本到搭建完整的 VSCode 远程开发环境,再到用 API 控制手机的闪光灯和摄像头,你的 Android 手机其实是一台被封印的 Linux 电脑。这几个技能搞下来,半小时的事,手机就再也不只是刷抖音的工具了。

MySQL 常用命令速查手册:从建表到查询优化 内网穿透实战:frp 让你在家里的电脑也能被公网访问

最新回复

暂无回复,来说两句吧

发表评论

站点总访问量:2834