基于CentOS7环境的Python从3.6升级到3.8及部署Tensorflow2的过程笔记

Posted 肖永威

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于CentOS7环境的Python从3.6升级到3.8及部署Tensorflow2的过程笔记相关的知识,希望对你有一定的参考价值。

0. 前言

原Python计算环境是Python3.6版本,以及基于3.6的Tensoflow1.13,由于Python3.6已经没有支持,因此,现升级到3.8。

1. Python从3.6升级到3.8

1.首先安装依赖包,安装相应的编译工具
由于是升级,CentOS环境依赖已经具备,此步骤跳过。

[root@bigdatahost bin]# yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-de

2.下载安装包
在当前用户下,把安装包下载到software文件夹下,下载有两种方式:

  • 一是直接从官方网站手工下载:
    https://www.python.org/ftp/python/3.8.13/Python-3.8.13.tgz

  • 二是命令获取:

[root@DeepLearning python]# cd software
[root@DeepLearning software]$ wget http://www.python.org/ftp/python/3.8.13/Python-3.8.13.tgz

3.解压

[root@DeepLearning software]# tar zxvf Python-3.8.13.tgz 

4.备份修改原python3(3.6版本)

[root@DeepLearning software]# cd /usr/local
[root@DeepLearning local]# mv python3 python3.6

5.创建编译安装目录

[root@DeepLearning local]# mkdir /usr/local/python3
[root@DeepLearning local]# ls
bin  etc  games  include  lib  lib64  libexec  python3  python3.6  sbin  share  src

6.安装
指定安装的路径

[root@DeepLearning local]# cd /home/python/software/Python-3.8.13
[root@DeepLearning Python-3.8.13]# ./configure --prefix=/usr/local/python3

编译

[root@DeepLearning Python-3.8.13]# make

报错:

/home/python/software/Python-3.8.13/Modules/_ctypes/_ctypes.c:107:17: 致命错误:ffi.h:没有那个文件或目录
编译中断。

解决方案:

[root@DeepLearning Python-3.8.13]# yum install libffi-devel 

安装

[root@DeepLearning Python-3.8.13]# make install

7.创建软链接
由于是升级,原先已经定义过,此步可以跳过。

[root@bigdatahost bin]# ln -s /usr/local/python3/bin/python3 /usr/bin/python3
[root@bigdatahost bin]# ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3

需要核实验证原定义是否有效。

[root@DeepLearning bin]# ls -l /usr/bin/python3
/usr/bin/python3 -> /usr/local/python3/bin/python3
[root@DeepLearning bin]# ls -l /usr/bin/pip3
/usr/bin/pip3 -> /usr/local/python3/bin/pip3

8.验证是否成功

python3 -V
pip3 -V

9.配置环境变量【可选】

[root@DeepLearning bin]# vi ~/.bash_profile

编辑配置文件

export PYTHON_HOME=/usr/local/python3
export PATH=$PYTHON_HOME/bin:$PATH

执行配置文件,生效

[root@DeepLearning bin]# source ~/.bash_profile
[root@DeepLearning bin]# echo $PYTHON_HOME
/usr/local/python3

2. python工具包、算法框架安装

2.1. Tensorflow2环境安装

安装tensorflow2.6,依赖numpy1.19.5版本。

# 安装numpy1.19.5
[root@DeepLearning bin]# pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple numpy==1.19.5
# 安装图像依赖imageio2.9.0
[root@DeepLearning bin]# pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple imageio==2.9.0
[root@DeepLearning bin]# pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple scikit-image
[root@DeepLearning bin]# pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple opencv-python
[root@DeepLearning bin]# pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple matplotlib
[root@DeepLearning bin]# pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple tensorflow==2.6.1

2.2. 数据分析环境安装

2.2.1 数据分析

# 数值计算包
[root@DeepLearning bin]# pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple scipy
[root@DeepLearning bin]# pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple pandas
[root@DeepLearning bin]# pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple scikit-learn
[root@DeepLearning bin]# pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple seaborn
# 贝叶斯优化包
[root@DeepLearning bin]# pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple bayesian-optimization

2.2.2. 机器学习集成算法XGBoost安装

XGBoost新版本需要依赖cmake3.15以上版本,以及gcc5.0以上版本,升级cmake和gcc过程如下所示,升级过程直接跳过。

[root@bigdatahost Downloads]# wget https://cmake.org/files/v3.17/cmake-3.17.1.tar.gz
[root@bigdatahost Downloads]# tar -zxvf cmake-3.17.1.tar.gz
[root@bigdatahost Downloads]# cd cmake-3.17.1
[root@bigdatahost cmake-3.17.1]# ./bootstrap --prefix=/usr
CMake has bootstrapped.  Now run gmake.
[root@bigdatahost cmake-3.17.1]# gmake
[root@bigdatahost cmake-3.17.1]# gmake install
升级gcc到5.x
如果已经安装,可以略过:
[root@bigdatahost Downloads]# yum install bzip2
[root@bigdatahost Downloads]# wget http://mirrors.ustc.edu.cn/gnu/gcc/gcc-5.4.0/gcc-5.4.0.tar.bz2
[root@bigdatahost Downloads]# tar -jxvf gcc-5.4.0.tar.bz2
[root@bigdatahost gcc-5.4.0]# cd gcc-5.4.0
[root@bigdatahost gcc-5.4.0]# ./contrib/download_prerequisites
[root@bigdatahost bin]# /home/python/Downloads/gcc-5.4.0/configure --enable-checking=release --enable-languages=c,c++ --disable-multilib

[root@bigdatahost bin]# make
[root@bigdatahost bin]# make install
保留一下4.8.5的gcc,后续需要回退的时候,可以方便很多
[root@bigdatahost bin]# mv gcc gcc-4.85
[root@bigdatahost bin]# mv g++ g++-4.85
[root@bigdatahost bin]# mv /usr/lib64/libstdc++.so.6 /usr/lib64/libstdc++.so.6-4.85
引用处理改为新版本
[root@bigdatahost bin]# ln -s /usr/local/bin/gcc /usr/bin/gcc
[root@bigdatahost bin]# ln -s /usr/local/bin/g++ /usr/bin/g++
[root@bigdatahost bin]# ln /usr/local/lib64/libstdc++.so.6 /usr/lib64/libstdc++.so.6

安装xgboost。

[root@DeepLearning bin]# pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple xgboost

2.3. 可视化及Web服务包安装

[root@DeepLearning bin]# pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple flask
[root@DeepLearning bin]# pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple tornado
[root@DeepLearning bin]# pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple streamlit==1.9.1

streamlit 1.10及以上版本与tensorflow2冲突:
tensorflow 2.6.1 requires typing-extensions~=3.7.4, but you have typing-extensions 4.2.0 which is incompatible.

2.4. 数据库接口

[root@DeepLearning bin]# pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple pymongo
[root@DeepLearning bin]# pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple clickhouse_driver

3. 其他

3.1. 卸载python3.6

卸载的时候直接把该⽬录删了即可:

 rm -rf /usr/local/python3.6

3.2. Pydev配置修改

对于Eclispe插件PyDev的配置如下:

PyDev/Interpreters/Python Interpreter中,通过“Browse for python/pypy.exe”按钮替换原来的“/usr/local/python3/bin/python3.6”为“/usr/local/python3/bin/python3.8”。

4. 总结

Python升级比较容易,很多环境依赖已经具备,只要重新安装新版本Python就可以,但是算法计算包升级要谨慎。

  • 建议一:计算环境与可视化环境最好相互独立,不依存;
  • 建议二:Tensorflow环境要求较为特殊,需要提前确定版本及依赖关系,例如Tensorflow2.6,依赖numpy1.19.5、imageio2.9.0、typing-extensions3.7.4等。

参考:

[1].肖永威. 基于CentOS7安装Python3计算环境与PyDev(Eclipse)开发工具日志(2021年). CSDN博客. 2021.04
[2]. 知识天罡茹薇00. linux安装和卸载python3 . 百度文库
[3]. weixin_39892615. python没有那个文件或目录_致命错误:python.h:没有那个文件或目录. CSDN博客. 2020.11

以上是关于基于CentOS7环境的Python从3.6升级到3.8及部署Tensorflow2的过程笔记的主要内容,如果未能解决你的问题,请参考以下文章

在 conda 中将 python 从 3.5 更新到 3.6

将 Mongodb 从 3.2 升级到 3.6 时出错

使用conda升级到python 3.6

将 Mac 上的 Python 从 2.7 升级到 3.6(或最新),用于弹性 beanstalk 客户端 AWS

docker学习2-快速搭建centos7-python3.6环境

Python升级3.6 强力Django+杀手级Xadmin打造在线教育平台