有了 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 —— 开机自启动
让你的脚本和服务在手机开机时自动跑起来:
- 装
Termux:BootAPK(F-Droid 有) - 开机后手动打开一次 Termux 授予自启权限(Android 限制)
- 把要启动的脚本放到
~/.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 任务不执行?
- 确认服务起来了:
sv status crond - 用绝对路径:
/data/data/com.termux/files/usr/bin/python而不是python - 脚本要有执行权限:
chmod +x script.sh
Q:code-server 占用多少内存?
空闲时约 120MB,打开项目后 200-300MB,不重。6GB RAM 的手机完全够用。
Termux 的上限取决于你的想象力。从跑个 Python 脚本到搭建完整的 VSCode 远程开发环境,再到用 API 控制手机的闪光灯和摄像头,你的 Android 手机其实是一台被封印的 Linux 电脑。这几个技能搞下来,半小时的事,手机就再也不只是刷抖音的工具了。