QPython 与 PC Python 的差异——移动端形态下的取舍与增强
相同的部分
首先,Python 语言本身是一样的。你写的 print("Hello")、def、import numpy as np 这些在 QPython 里和 PC 上没有任何语法区别。标准库(os、sys、math、json、re 等)和大多数第三方库的基本用法也一致。
如果你的代码不依赖特定的 PC 环境(比如显示器、鼠标、特定的文件系统路径),通常可以直接在 QPython 里运行。
移动端独有的增强
QPython 相比 PC 环境,提供了几个手机上才能做的事情:
QSL4A Android API 桥接
这是 QPython 的杀手级功能。在 PC 上,你无法通过 Python 调用 PC 的摄像头、读取 GPS、控制蓝牙。在 QPython 里,这些通过 androidhelper 模块一行代码就能搞定:
from androidhelper import Android
droid = Android()
droid.startLocating() # 启动 GPS 定位
print(droid.getLastKnownLocation()) # 获取最后一次已知位置
droid.takePicture() # 拍照
硬件传感器
加速度计、陀螺仪、磁力计、光线传感器、接近传感器、麦克风——这些 PC 上(除了笔记本有摄像头和麦克风)基本都没有,而 QPython 可以直接读取:
droid.startSensingTimed(1, 1000) # 每秒读取一次
图形化 UI 框架
FullScreenWrapper2 是 QSL4A 内置的 UI 构建框架,可以用纯 Python 代码在 Android 上构建界面化应用,这在 PC 上对应 tkinter / PyQt,但 QPython 的 UI 是原生 Android 风格。
悬浮窗与后台运行
QPython 可以申请悬浮窗权限,在任何 App 之上显示终端或 UI。还可以用前台服务保持后台运行,实现持续监听传感器或自动巡检。
移动端的天然限制
算力与内存
手机 CPU 和内存远弱于 PC。大规模矩阵运算、图像处理、深度学习训练在手机上不现实。即使是本地 AI 推理,也需要选择量化后的小模型(如 Llama 3.2 1B/3B)。
文件系统差异
Android 的文件系统是沙盒式的。QPython 的脚本和数据默认存在 App 私有目录下,外部存储(SD 卡、USB)需要通过 Android 存储访问框架(SAF)授权。直接用硬编码路径(如 /sdcard/xxx)在某些 Android 版本上会失败。
输入体验
手机屏幕小、输入法受限。大量代码的编写效率远不如 PC。QEditor 提供了扩展键盘条(底部常驻常用关键字和符号按钮)来补偿,但终究是次优方案。
后台生存
Android 的电池优化机制会主动杀后台进程。长时间运行的脚本需要申请忽略电池优化(QPython 设置里有相关选项),否则容易被系统终止。
网络依赖
下载第三方库、拉取模型权重都需要网络。手机流量有限,建议在 Wi-Fi 下完成包安装和模型下载。
典型工作流对比
| 步骤 | PC Python | QPython |
|---|---|---|
| 编辑器 | VS Code / PyCharm | QEditor(内置) |
| 运行 | 终端 / IDE Run 按钮 | 终端 / QEditor Run 按钮 |
| 安装包 | pip install xxx | QPYPI / pip install xxx |
| 访问硬件 | 有限(摄像头可用) | QSL4A 完整桥接 |
| UI 框架 | tkinter / PyQt | FullScreenWrapper2 |
| AI 能力 | 自行部署 | 内置 Ollama,一键下载 |
小结
QPython 不是 PC Python 的替代品,而是互补品。它在移动端形态上做了针对性增强(Android API、硬件访问、本地 AI),同时天然受限于手机算力和交互方式。最佳实践通常是:在 PC 上写和调大段代码,在 QPython 上做移动端特有的工作——比如传感器数据采集、自动化脚本原型、AI 应用的移动端演示。
现在环境搭好了,可以看 安装方式 开始动手。