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

为何终端可运行的YOLO Python文件在Flutter macOS应用中报错?

Flutter macOS调用YOLO Python脚本找不到torch的原因及解决

在Flutter macOS应用中使用process_run包执行YOLO的detect.py脚本时,出现ModuleNotFoundError: No module named 'torch',但终端直接执行相同命令却正常运行,核心原因是Flutter应用的运行环境与终端的Python环境不一致,具体分两点:

  • 环境变量不继承:Flutter应用在受限环境(如沙箱)中运行,不会继承终端的完整环境变量。终端里的python3可能指向已安装torch的版本(比如通过pyenv、Anaconda管理,或用户本地安装),而process_run默认调用的是系统自带的Python,该版本未安装相关依赖。
  • 虚拟环境未激活:如果你是在虚拟环境中安装的torch,终端执行时已激活虚拟环境,但Flutter调用脚本时没有激活对应的虚拟环境,导致无法找到依赖包。

解决办法

  1. 使用Python绝对路径
    先在终端执行which python3,获取能正常运行detect.py的Python绝对路径,替换代码中的python3:
_runPython() async {
    var shell = Shell();

    await shell.run('''
    /Users/yourname/.pyenv/shims/python3 yolov5/detect.py
    ''');
  }
  1. 激活虚拟环境后执行
    如果使用了虚拟环境,先执行激活命令再运行脚本(假设虚拟环境目录为yolov5/venv):
_runPython() async {
    var shell = Shell();

    await shell.run('''
    source yolov5/venv/bin/activate && python3 detect.py
    ''');
  }
  1. 指定PYTHONPATH
    将装有torch的site-packages目录添加到PYTHONPATH后执行:
_runPython() async {
    var shell = Shell();

    await shell.run('''
    export PYTHONPATH="/Users/yourname/Library/Python/3.9/lib/python/site-packages" && python3 yolov5/detect.py
    ''');
  }

内容的提问来源于stack exchange,提问作者greenzebra

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 19:05:10