运行YOLOv8重训练目标检测测试时遇错误:无法从collections导入Callable
解决思路
错误根源
Python 3.10及以上版本中,Callable已从collections模块迁移至collections.abc,你当前安装的keyring版本不兼容Python 3.11,导致导入失败。另外,你可能安装了非官方的yolo包,而非YOLOv8官方的ultralytics包,引发依赖混乱。
具体解决步骤
更新keyring到兼容版本
运行以下命令升级keyring:pip install --upgrade keyring若升级后仍有问题,可指定兼容Python 3.11的版本:
pip install keyring==23.13.1替换为官方YOLOv8包
你当前使用的yolo包并非官方YOLOv8包,官方包是ultralytics,操作如下:- 卸载非官方包:
pip uninstall yolo - 安装官方包:
pip install ultralytics
之后使用
yolo命令即可调用官方YOLOv8,不会再触发keyring相关依赖问题。- 卸载非官方包:
使用虚拟环境隔离依赖
若系统全局Python包存在冲突,建议创建独立虚拟环境:- 创建虚拟环境:
python3.11 -m venv yolov8_env - 激活虚拟环境(Mac/Linux):
source yolov8_env/bin/activate - 在虚拟环境内安装官方YOLOv8包:
pip install ultralytics
之后在该环境内运行测试,避免全局包干扰。
- 创建虚拟环境:
内容的提问来源于stack exchange,提问作者El Cino
相关产品推荐
相关产品推荐

