前两天,实验室的博士大师兄让我装一个pytorch-encoding的安装包,用来跑语义分割模型。不装不知道,一装吓一跳,这个安装包耗费了我差不多三天的时间,才终于安装完毕。特此写文记录一下安装这个毒包的问题。
系统Ubuntu 16.04
本文直接采用 pip install torch-encoding 的安装方式,后面没有加--pre
并且已经提前安装好了各种需要的包或者配置
1、系统GCC版本不匹配问题
如果你没有碰到这个问题,那你很幸运,你系统使用的GCC版本足够高,足以支持你第一步的安装。但是如果你系统的GCC版本低于4.9,那么不好意思,你将碰到下面的警告提示!
好的,这是我碰到的第一个最麻烦的事情。首先想到的事把GCC版本更新到4.9以上不就好了,然后开始搜索博文怎么安装新的版本的GCC。但最后我没有安装新版本的GCC,原因是我发现系统里面已经有了好几个版本的GCC,但系统在安装pytoch-encoding的时候,始终选择用4.8版本的GCC,这是让我最难受的一件事。
大家在安装高版本的GCC之前,使用下面的命令来查看系统是否已经有了高版本的GCC。在这里大家需要注意一点就是GCC和gcc的区别,GCC包含了gcc和g++,具体大家自行百度二者的区别联系。
ls /usr/bin/gcc*
好的,从上图可以看出,系统里面已经安装了gcc-4.8,gcc-4.9,gcc-6,gcc-7。因为gcc和g++在系统当中都是对应存在的,因此,系统里面也对应拥有g++-4.8,g++-4.9,g++-6,g++-7。同理,可以使用如下命令来查看g++有哪些版本。
ls /usr/bin/g++*
好的,既然系统当中拥有这么多版本的gcc,为啥系统就偏偏要用gcc-4.8来编译pytorch-encoding当中的文件呢?
首先,我们看一下,系统当中默认使用的gcc版本是多少:
gcc --version
使用上面的命令可以看到当前系统使用的gcc版本,当然,我的系统使用的是4.8的版本。所以才导致安装包的时候一直用的4.8。好的,那么更改一下系统默认使用的版本不就好了,经过百度博客学习,掌握了多版本的gcc的管理和切换。
不同版本的gcc管理和切换:
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 100
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-6 100
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-7 100
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-6 100
上面的命令,是将将各个版本gcc和g++加入候选中,并设置优先级,后面想要使用哪个版本的gcc和g++直接进行配置切换就行,就比较方便