ubuntu16.04安装yolov5过程中问题总结

0 前言

        近期尝试在ubuntu16.04上使用yolov5,整个过程中出现了特别多的问题,特此记录下来,仅供以后自己和各位难友们参考。

        yolov5安装环境依赖于python3.6及以上,而ubuntu16自带python2.7以及python3.5,因此首先需要对python3进行升级。

1 python3.5升级为python3.8

1.1 添加 deadsnakes PPA 源

sudo add-apt-repository ppa:deadsnakes/ppa

1.2 更新源

sudo apt-get update

1.3 安装python3.8

sudo apt-get install python3.8

1.4 测试是否安装成功

python3.8 -V

1.5 配置python3.8为默认python3

sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.5 2
sudo update-alternatives --config python3

随后输入python3.8所在一行数字,回车

1.6 测试是否配置成功
 

python3

        若配置成功,会显示python3版本为python3.8

        至此,pythoh3.8的安装以及完成,但设置python3.8为默认python3后,系统终端将无法利用快捷键和图标打开,只能鼠标右键打开,需解决终端无法打开的问题。

2  解决python3升级后终端无法打开的问题

2.1 寻找gnome-terminal所在位置

which gnome-terminal

显示 /usr/bin/gnome-terminal
2.2 编辑gnome-terminal文件

sudo gedit /usr/bin/gnome-terminal

修改第一行#!/usr/bin/python3为#!/usr/bin/python3.5
        此时再按快捷键,终端即可打开。

        随后,还需要为python3配置相对应的pip3库,这里我尝试了两种方法。

3 pip3安装

3.1 尝试第一种方法

sudo apt-get install python3-pip

3.2 失败后采用第二种方法

wget https://bootstrap.pypa.io/get-pip.py
sudo python3 get-pip.py

我安装时此处报错,随后:
 

sudo apt-get install python3.8-distutils

再尝试:

sudo python3 get-pip.py

测试是否安装成功:

pip3 -V 

4  安装yolov5

4.1 下载

git clone https://github.com/ultralytics/yolov5.git

4.2 安装依赖

cd ~/yolov5
pip3 install -U -r requirements.txt

4.3 测试功能

python3 detect.py

此时会报错:
Traceback (most recent call last):
  File "detect.py", line 12, in
    import cv2
ImportError: /opt/ros/kinetic/lib/python2.7/dist-packages/cv2.so: undefined symbol: PyCObject_Type
是因为yolov5基于python3,此时需要python3调用cv2.so文件,而python3此时找不到cv2.so,因为此时cv2.so文件指向了python2.7。

解决方法一:

sudo gedit ~/.bashrc

在末尾添加:

export PYTHONPATH="/home/lww/.local/lib/python3.8/site-packages":$PYTHONPATH

随后:

source ~/.bashrc
python3 detect.py 

成功

(若采用这种方法,会出现ros无法启动的问题,因为source /opt/ros/kinetic/setup.bash默认指向了python2.7,ros依赖于python2.7,我们需要使用ros的时候必须将export PYTHONPATH="/home/lww/.local/lib/python3.8/site-packages":$PYTHONPATH注释掉)

解决方法二:

编辑detect.py文件,在import cv2前写上:

import sys
sys.path.remove('/opt/ros/kinetic/lib/python2.7/dist-packages')
python3 detect.py

成功

附:如何改变pip指向

        安装python3对应的pip3之后,发现输入pip -V,也是对应的python3的pip库,此时我需要pip指向python2,pip3指向python3。

首先,找到pip位置

which pip

修改第一行代码#!/usr/bin/python3,改为:

#!/usr/bin/python2

你可能感兴趣的:(python,ubuntu,经验分享)