一、前言
最近根据网上给出的一些教程等试着跑YOLOv8,在训练过程中遇到了不少问题一直报错让我特别头疼,好在都解决了,已经训练成功。分享出来,希望可以帮助到一些有需要的人。如果有错误欢迎指正。
二
1、Error while loading conda entry point: anaconda-cloud-auth (cannot import name ‘ChannelAuthBase‘ from ···
这个错误通常是由于anaconda-cloud-auth模块中的某些依赖项不兼容或损坏导致的,比如anaconda安装不完整、升级失败或插件包损坏。以下是一些可能的解决方法:
(1)更新anaconda-cloud-auth或者更新conda
conda update conda
conda update anaconda-cloud-auth
(2)如果更新无效可以尝试重新安装anaconda-cloud-auth
conda remove anaconda-cloud-auth
conda install anaconda-cloud-auth
(3)检查python环境
确保你使用的 Python 环境与anaconda-cloud-auth兼容。你可以尝试创建一个新的虚拟环境myenv并重新安装相关包:
conda create -n myenv python=3.8
conda activate myenv
conda install anaconda-cloud-auth
(4)卸载anaconda并重新安装
如果上述方法都无效,可以试试卸载anaconda再重新安装,卸载之前注意备份自己的数据。可以直接去搜索conda卸载教程是可以找到的。
2、ImportError: cannot import name ‘Callable‘ from ‘collections‘
这个错误通常是由于 Python 版本不兼容或代码中使用了过时的模块导入方式导致的。collections.Callable 在 Python 3.10 及以上版本中被移除(我在训练时候是Python 3.11),取而代之的是collections.abc.Callable。如果直接使用了 from collections import Callable,就会导致ImportError。因此如果你使用的是较新的 Python 版本,可能会遇到这个问题。
(1)在报错代码的最后是File "/hy-tmp/yolov8/lib/python3. 11/site packages/keyring/util/properties.py", line 1, in <module〉from collections import Callable,根据提示文件路径去到/hy-tmp/yolov8/lib/python3. 11/site packages/keyring/util/properties.py这个文件,在collections改成collections.abc,如下图所示:
由于我是租用的服务器所以文件路径会看起来不太一样,如果自己在pycharm训练的话,可以直接点击就可以跳转到该文件,修改即可。
(2)当然也可以降级python版本解决该问题,如果你的代码依赖于旧版本的 Python 并且无法修改代码,可以考虑降级 Python 版本到 3.9 或更低版本。
conda install python=3.9
但是第一种解决方案是最标准的解决方案,比较推荐。
3、Error: No such command ‘predict‘
这个报错是你尝试运行的命令行工具或脚本中使用了predict命令,但该命令并不存在或未被正确识别。我看到有执行这个命令来解决的方案,但是我发现我的代码中并没有setup.py这个文件,不能成功执行该命令。
python setup.py install
后来我发现在根目录即.\ultralytics-main路径下执行
pip uninstall ultralytics
然后重新安装可以解决
pip install ultralytics
类似这类的问题应该都可以试着这样解决。如果是使用了特定的虚拟环境,也可以在conda该虚拟环境中执行上述命令。
4、WARNING: Running pip as the ‘root‘ user can result in broken permissions and conflicting···
我用的是恒源云租用Linux系统的服务器,在安装必要的包的时候发生了这个报错。这个警告信息表明正在以root用户身份运行pip安装 Python 包,这可能会导致文件权限问题和潜在的依赖冲突。
权限问题:以root用户运行pip会将包安装到系统全局的Python环境中,这可能会导致文件权限混乱,尤其是当你使用非root用户运行 Python 程序时。
依赖冲突:全局安装的包可能与系统包管理器(如apt、yum等)安装的包发生冲突,导致系统不稳定。
安全性问题:以root用户运行pip可能会意外覆盖或删除系统关键文件,存在安全风险。
解决方法不止一种,最推荐的是为项目创建一个虚拟环境,在虚拟环境中安装必要的包,不会影响到全局的Python环境
- 安装virtualenv 或venv(Python 3.3+ 自带):
pip install virtualenv
- 创建虚拟环境(环境名称自己命名即可):
python3 -m venv 环境名称
如果这一步出现问题:returned non-zero exit status 1,可以更换命令:
python3 -m venv --without-pip 环境名称
接下来:
激活环境:source 环境名称/bin/activate(这是Linux系统命令,Windows使用 环境名称\Scripts\activate)
获取pip安装文件:wget https://bootstrap.pypa.io/get-pip.py
安装:python get-pip.py
退出虚拟环境:deactivate
重新进入:source 环境名称/bin/activate
确认python:which python
确认pip:which pip
5、FileNotFoundError:
这个问题主要是因为我的文件路径错误,我在自己的data.yaml文件中使用了绝对路径。截图中显示路径为/hy-tmp/datasets/E: \paper ultralytics-8.2.103/datasets/color/images/train,但是由于我是在服务器上训练,是肯定不能找到我电脑E盘的文件的。但是后面我连续修改了好多次都有这个报错,发现是我用的恒源云服务器自己的设置导致的,路径会自动加上/hy-tmp/datasets/的前缀,导致路径重复。
路径重复解决也简单,比对一下删除掉重复的部分即可,保证路径正确。
三、结语
遇到了不少问题但是也有不少收获,自己还有很多需要学习的,有问题欢迎在评论区讨论。~~~///(^v^)\\\~~~