You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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脚本打包成独立可执行文件,避免依赖用户环境:
    pyinstaller --onefile hardware_info.py
    
    之后Flutter直接调用生成的可执行文件即可。

方案2:移动平台(Android/iOS)——通过平台通道集成Python

移动平台无法直接运行Python,需要集成Python解释器到原生项目,再通过Platform Channels和Flutter通信:

Android端(用Chaquopy)

  1. 在Android项目的build.gradle中配置Chaquopy依赖
  2. 将psutil和你的脚本放入src/main/python目录
  3. 在Kotlin/Java代码中通过Chaquopy执行脚本,获取数据后通过MethodChannel传给Flutter

iOS端(用PythonKit)

  1. 用CocoaPods引入PythonKit
  2. 嵌入Python解释器和psutil库到项目
  3. 在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 16:19:54