Termux中运行Python脚本需三步到位:先执行termux-setup-storage获取存储权限,再用pkg install python clang libffi-dev openssl-dev装齐依赖,最后配置pip清华源并优先通过science-packages仓库安装科学计算库。
python 脚本在安卓手机上能直接运行,但前提是环境配对——Termux 不是“装了就能跑”,它需要三步到位:权限打通、源换稳、依赖装齐。跳过任一环节,ImportError、Permission denied 或 command not found 就会立刻报到你脸上。
termux-setup-storage 必须在安装 Python 前执行
Android 11+ 系统默认禁止应用直接访问内部存储,而 Termux 的 ~/storage 是靠 termux-setup-storage 命令动态创建的符号链接。没运行这一步,python script.py 可能提示找不到文件,或写入日志时抛出 PermissionError: [Errno 13] Permission denied。
- 首次启动 Termux 后立即执行:
termux-setup-storage,系统会弹出 Android 权限请求,务必点“允许” - 执行成功后,
ls ~/storage应能看到dcim/、downloads/、shared/等目录 - 脚本若放在
/sdcard/Download/hello.py,需用完整路径调用:python /sdcard/Download/hello.py,不能写成python ~/storage/downloads/hello.py(后者是软链,部分库识别不稳定)
pkg install python 不等于开箱即用
Termux 自带的 pkg install python 安装的是 CPython 解释器,但它默认不带 pip 的 wheel 支持,也不含编译扩展所需的头文件——这意味着你后续 pip install numpy 很可能卡在 gcc: error: unrecognized command line option '-fstack-protector-strong'。
- 必须连带安装开发依赖:
pkg install python clang libffi-dev openssl-dev - 验证是否装全:
python -c "import sysconfig; print(sysconfig.get_paths())",输出中应含include和platinclude路径 - 别用
pkg install python3——Termux 中python就是 Python 3.x,python3是冗余符号链接,删了也不影响
pip 源不换,90% 的包会安装失败
Termux 默认 pip 源指向 pypi.org,但在国内移动网络下,DNS 解析常超时、TLS 握手失败,表现为 ConnectionError: HTTPSConnectionPool 或卡在 “Collecting …” 十分钟不动。
Python 3.14.3
微软官方的 Python 扩展,是 VS Code 安装量最高的扩展(209M+)。集成 IntelliSense(通过 Pylance)、调试(通过 Python Debugger)、代码检查、格式化、重构和单元测试等功能。支持 Jupyter Notebook、虚拟环境管理和多 Python 版本切换。
- 一键配置清华源:
mkdir -p ~/.pip && echo -e "[global]\nindex-url = https://pypi.tuna.tsinghua.edu.cn/simple/\ntrusted-host = pypi.tuna.tsinghua.edu.cn" > ~/.pip/pip.conf - 生效后测试:
pip install requests --upgrade --quiet,3 秒内完成即正常 - 注意:不要用
pip config set global.index-url,Termux 的 pip 版本较旧,该命令不支持
科学计算库优先走 science-packages 仓库
像 numpy、scipy、matplotlib 这类含 C 扩展的库,在 Termux 上从源码编译成功率极低——ARM 架构 + 内存限制 + 缺少 Fortran 工具链,基本等于劝退。
- 启用官方 science 仓库:
pkg install unstable-repo && pkg install science-repo(2026 年已合并为science-packages) - 然后直接装预编译二进制:
pkg install python-numpy python-scipy python-matplotlib - 验证:
python -c "import numpy as np; print(np.__version__)”,输出版本号即成功;若报libopenblas.so: cannot open shared object file,补装:pkg install openblas
Termux 的 Python 环境不是 Linux 的简化版,而是针对 ARM+Android 的特制变体——pkg 和 pip 各管一摊,~/storage 是权限桥,science-packages 是救命稻草。漏掉其中任意一层抽象,问题就藏在看似最平常的 python script.py 里。