如何在Flutter项目中集成Python的psutil库获取硬件与内存信息?
在Flutter项目中集成Python psutil收集硬件信息的方案
因为Flutter本身没有直接调用psutil的方法,你可以通过进程通信或平台通道的方式实现,以下是具体可行的方案:
方案1:桌面平台(Windows/macOS/Linux)——直接调用Python脚本
桌面环境天然支持运行Python进程,这是最便捷的方式:
步骤1:编写Python收集脚本
创建hardware_info.py,用psutil获取数据并以JSON格式输出:
import psutil import json def collect_hardware_data(): data = { "total_memory": psutil.virtual_memory().total, "used_memory": psutil.virtual_memory().used, "cpu_usage": psutil.cpu_percent(interval=1), "total_disk": psutil.disk_usage('/').total, "used_disk": psutil.disk_usage('/').used } print(json.dumps(data)) if __name__ == "__main__": collect_hardware_data()
步骤2:Flutter中执行脚本并解析结果
使用dart:io的Process类调用Python脚本,捕获输出并解析JSON:
import 'dart:convert'; import 'dart:io'; Future<Map<String, dynamic>> getHardwareInfo() async { try { // 根据系统调整Python命令:Windows用'python',macOS/Linux用'python3' final processResult = await Process.run('python3', ['hardware_info.py']); if (processResult.exitCode == 0) { return jsonDecode(processResult.stdout); } else { throw Exception('脚本执行失败:${processResult.stderr}'); } } catch (e) { throw Exception('调用Python失败:$e'); } }
注意事项
- 确保目标设备已安装Python和psutil(执行
pip install psutil) - 打包桌面应用时,建议用PyInstaller把Python脚本打包成独立可执行文件,避免依赖用户环境:
之后Flutter直接调用生成的可执行文件即可。pyinstaller --onefile hardware_info.py
方案2:移动平台(Android/iOS)——通过平台通道集成Python
移动平台无法直接运行Python,需要集成Python解释器到原生项目,再通过Platform Channels和Flutter通信:
Android端(用Chaquopy)
- 在Android项目的
build.gradle中配置Chaquopy依赖 - 将psutil和你的脚本放入
src/main/python目录 - 在Kotlin/Java代码中通过Chaquopy执行脚本,获取数据后通过MethodChannel传给Flutter
iOS端(用PythonKit)
- 用CocoaPods引入PythonKit
- 嵌入Python解释器和psutil库到项目
- 在Swift代码中执行脚本,将结果通过MethodChannel返回给Flutter
注意:移动平台集成Python会显著增加APK/IPA体积,若只是需要基础硬件数据,更推荐用Flutter原生插件。
方案3:替代方案——使用Flutter原生插件
如果不想依赖Python,这些Flutter插件可以直接获取硬件信息:
device_info_plus:获取设备型号、系统版本等基础信息system_info:获取CPU、内存、磁盘的详细数据flutter_system_info:提供多平台的系统状态监测
这些插件无需额外依赖,适配性更好,适合大多数场景。
内容的提问来源于stack exchange,提问作者Vinícius Bruno
相关产品推荐
相关产品推荐

