大多数在ubuntu配置yolov5的教程中,都需要安装anaconda,然后再使用conda create -n pytorch1.7 python=3.8的类似命令为pytorch创建一个anaconda虚拟环境,然后在pytorch1.7 的环境下安装pytorch。
但是,我按照这种普遍的方法,并尝试了网上各种解决"no module named torch"的方法仍然解决不了这个问题。感觉问题是出在为pytorch创建一个anaconda虚拟环境时,需要指定python的版本python=3.8,指定python版本主要根据自己现在linux系统中的版本,例如使用python -V(或python3 -V,因为unbuntu20.04以上的版本都是python3,所以python -V在unbuntu20.04无用),就可以查看当前的python版本。
我的ubuntu20.04上的python版本是python3.8.10。但是我在anaconda环境下执行conda create -n pytorch1.7 python=3.8后,接着在pytorch1.7环境下,我的python版本是python3.8.3。也就是说,在anaconda环境下安装的pytorch,python版本(python3.8.3)和原始linux环境下的python版本(python3.8.10)是对不上的,所以哪怕在命令行输入下列命令验证pytorch确实成功安装,也依旧会出现"no module named torch"。
还有些网上的解决教程说是在VScode或者是Pycharm中解释器选择不对导致的,我也尝试解决过,没有成功。因为我在终端的pytorch1.7环境下,也还是出现此类错误。
import torch
print(torch.__version__)
print(torch.cuda.is_available())#如果你安装的pytorch是基于cuda,用这条命令检验,成功安装输出True
print(torch.cpu.is_available())#如果你安装的pytorch是基于cpu,用这条命令检验,成功安装输出True
最后我推测,由于在anaconda环境下安装的pytorch,python版本(python3.8.3)和原始linux环境下的python版本(python3.8.10)是对不上,导致系统运行时不知道要选哪个,我也搞不懂安装anaconda环境的意义是什么?
于是,我就卸载原有的anaconda环境,打算不借助anaconda,直接使用pip的方式安装pytorch。
直接pytorch官网:Start Locally | PyTorch上根据自己的系统选择,我不选择CUDA的,看网上资料安装CUDA首先需要下载好你电脑对应的NVIDIA显卡驱动。我的电脑的显卡是AMD,非NVIDIA,弄这个有些麻烦,所以直接使用电脑CPU,并利用pip直接下载。
执行完下面的命令:
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu
命令后,再次运行detect.py,终于没有出现"no module named torch"报错了,完美!!!
但是,会出现一个小错误是说找不到CUDA什么的,不用担心。找到torch_utils.py文件,我的文件是在/home/zlt/ros_yolov5_ws/src/yolov5_ros/src/yolov5/utils/torch_utils.py。注释掉图片中的两行就可以了。后面如果还出现一些警告什么的,主要是一些库之类的版本要大于等于多少,就直接上网搜对应的安装命令即可。