这次安装程序我从来没有那么痛苦过;
本机环境:centos6.6 原来默认python2.7 版本
需要安装:python3.9 + numpy + Matplotlib + opencv-python
1、我碰到的问题:
1、在服务上采用yum install gcc 等等都报错,反正就是yum命令安装都会保网络简介错误,无法打开各种端口;
2、Broken toolchain: cannot link a simple C++ program. note: A compiler with support for C++11 language features is required. (安装numpy时发生)
3、[modules/core/CMakeFiles/opencv_core.dir/mathfuncs_core.avx2.cpp.o] Error 1
Could not build wheels for opencv-python, which is required to install pyproject.toml-based projects(安装opencv-python时发生)
网上和按照openCV(OpenCV中文官方文档)操作也没有解决,反正按这些操作都是错的,非常想放弃,为何按照一个openCV 在centos 上如此的麻烦?
2、解决yum打开端口错误,我修改机器的DNS配置;
vi /etc/resolv.conf
options timeout:2 attempts:3 rotate single-request-reopen
; generated by /sbin/dhclient-script
#nameserver 172.31.109.33 【这个被我注释了】
nameserver 8.8.8.8 【这个是我新添加的的】
我不知到这个阿里云服务器为何配置了这个ip? 我很想揍死原来的维护人员。
但是还是报错,提示本机yum更新源有问题,原因是原来centos不再维护了
[base]
name=CentOS-6.6 - Base
baseurl=http://mirrors.aliyun.com/centos-vault/6.6/os/x86_64/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos-vault/RPM-GPG-KEY-CentOS-6
[updates]
name=CentOS-6.6 - Updates
baseurl=http://mirrors.aliyun.com/centos-vault/6.6/updates/x86_64/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos-vault/RPM-GPG-KEY-CentOS-6
[extras]
name=CentOS-6.6 - Extras
baseurl=http://mirrors.aliyun.com/centos-vault/6.6/extras/x86_64/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos-vault/RPM-GPG-KEY-CentOS-6
[centosplus]
name=CentOS-6.6 - Plus
baseurl=http://mirrors.aliyun.com/centos-vault/6.6/centosplus/x86_64/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.aliyun.com/centos-vault/RPM-GPG-KEY-CentOS-6
[contrib]
name=CentOS-6.6 - Contrib
baseurl=http://mirrors.aliyun.com/centos-vault/6.6/contrib/x86_64/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.aliyun.com/centos-vault/RPM-GPG-KEY-CentOS-6
采用以上代码替换:CentOS-Base-Aliyun.repo 文件中的 内容
采用以下命令更新源缓存信息
yum clean all
yum makecache
于是采用源码安装
3、源码安装python3.9
1、下载去官网下载:Python 3.9.11 (Python Source Releases | Python.org)
tar -zxvf Python-3.9.11.tgz
./configure --prefix=/usr/local/python3 --enable-optimizations --with-ssl --enable-shared
执行以上文件会报错,提示语法错误/Python-3.9.11/Modules/frameobject.c,又开始奔溃了;
我检查了auxvec.h文件:直接将
/Python-3.9.11/Modules/frameobject.c,这个内容显然是win上的东西搞死人 修改成如下
#if MS_WINDOWS && defined(FAULTHANDLER_USE_ALT_STACK) && defined(HAVE_LINUX_AUXVEC_H)
include
include
#endif
auxvec这个东西是win上的东西,centos上是可以不需要的,于是我加入了 MS_WINDOWS 这个判断;
./configure --prefix=/usr/local/python3 --enable-optimizations --with-ssl --enable-shared
make && make install
#创建软连接
ln -s /usr/local/python3/bin/python3 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
#设置环境变量
vim /etc/profile
重新载入环境变量
source ~/.bash_profile
python3.9 安装完成。终于可喝口咖啡了,已经过去了3个小时。
开始安装:numpy,但是提示gcc版本太低了,无法安装
gcc -v 提示本机的gcc 为4.7.7,查看了gcc版本,再gcc4.8开始才开始支持C++11,而numpy1.11开始就需要C++11支持了,否则你是无法安装的;
于是是试图安装一个最新的GCC版本,然后我又一次奔溃了;
4 、安装了gcc gcc-8.4.0/,
这个过程也是崩溃的,历时非常的长,估计4个小时才安装完毕,编译非常的慢,几乎晕过去了。
这个也是采用源码安装
wget ftp://gcc.gnu.org/pub/gcc/releases/gcc-8.4.0/gcc-8.4.0.tar.bz2
$ ./contrib/download_prerequisites
mkdir build
$ cd build
$ ../configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
$ make && make install
whice gcc
gcc -v
重要安装上去了,可以开始安装numpy了,但是gcc 没有问题了。
但是在安装numpy时选哟安装一个cmake库,这个库要求为 cmake-3.1.3.tar.gz 于是安装这个cmake-3.1.3这个编译库,但是这个库要求 gcc 小于4.9版本;
我奔溃了,原来gcc 需要降级处理了,开始要骂娘了。
5、将gcc从8.4降级到4.8
wget ftp://gcc.gnu.org/pub/gcc/releases/gcc-4.8.0/gcc-4.8.0.tar.bz2
$ ./contrib/download_prerequisites
mkdir build
$ cd build
$ ../configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
$ make
make出错,原因是你不能采用gcc8.4去编译低级版本的源码,需要修改3个文件
请参考这个文件:CentOS 7.6对gcc版本降级_xzz3493的博客-CSDN博客_centos gcc降级
修改,感谢这个作者,没有他我都不知道如何处理.
gcc降级完成,顺利安装了gcc4.8 ,到了 /usr/local/gcc-4.8.0/ 这个目录, 我们开始备份原来的gcc-8.4(这个可是我非常不容易才安装上的,不能直接覆盖的),采用软链方式
mv /usr/local/bin/gcc /ljw/gccback/
ln -s /usr/local/gcc-4.8.0./bin/gcc /usr/local/bin/gcc
顺利完成cmake-3.1.3 ,完成numpy源码安装
./pip3 install --upgrade setuptools
./pip3 install Matplotlib
完成Matplotlib 安装
./pip3 install --upgrade pip setuptools wheel
./pip3 install opencv-python
(from opencv-python) (1.19.3)
./pip3 install opencv-python==3.4.0.14
搞了两天终于完成了