centos6及centos7平台上搭建人工智能深度学习框架tensorflow
本次博客的目的是在CentOS6.X和7.X版本上源码安装Python3和人工智能深度学习框架Tensorflow,其中的部分过程是为了演示升级操作,方便以后所需,所以可能有些繁琐(或者有些没必要),但了解它是很有用处的。
安装前说明
- tensorflow 只支持64位的平台,只需要你安装的虚拟机是64位即可,不要求实体机
- centos6.X默认安装的python是2.X的版本
- tensorflow要求是2.7.x或3.X(以后只支持3.X)
- 需要更改pip源为国内源
- 如果使用的是centos6.X的操作系统,它支持的glibc库版本最高的是2.14(centos6.6),而tensorflow需要glibc库版本为2.17,所以需要手动升级,而centos7.X可以 选用更高版本。
centos6(以centos6.6演示)源码安装python3和tensorflow
观看centos自带的python版本
[hadoop@s1 ~]$ python -V # 注意是大写的V
Python 2.6.6
安装必要的依赖包
[hadoop@s1 ~]$ gcc -v # 注意是小写的v
bash: gcc: command not found
[hadoop@s1 ~]$ sudo yum install -y gcc zlib* openssl-devel
主要是升级了c编译器
在编译之前需要安装一些必须的依赖,否则当报错的时候还得重新编译
[hadoop@s1 ~]$ gcc -v # 注意是小写的v
Using built-in specs.
Target: x86_64-redhat-linux
……
gcc version 4.4.7 20120313 (Red Hat 4.4.7-23) (GCC)
解压python3并编译安装
- 将python3.6的压缩包使用远程传输工具传输到虚拟机的
~/downloads
目录,如果没有该目录请使用命令创建或手动创建 - 在家目录下创建目录
python3.6
- 解压
~/downloads/Python-3.6.4.tgz
到家目录下的python3.6
目录:在这里插入代码片:[hadoop@s1 ~]$ tar -zxvf downloads/Python-3.6.4.tgz -C python3.6
- 安装python3.6,安装目录
/usr/local/python3
:
cd python3.6/Python-3.6.4 #注意前一个python的p是小写后一个是大写
./configure --prefix=/usr/local/python3 --with-ssl
- 执行编译和安装命令
make //编译
sudo make install //安装,必须加sudo
建立软链接
[hadoop@s1 Python-3.6.4]$ cd /usr/bin
[hadoop@s1 bin]$ sudo ln -s /usr/local/python3/bin/python3.6 python3
测试:
[hadoop@s1 bin]$ python3
Python 3.6.4 (default, Aug 30 2019, 14:08:43)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-23)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
升级pip3
可供pip安装源:
阿里云 https://mirrors.aliyun.com/pypi/simple/
中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/
豆瓣(douban) https://pypi.douban.com/simple/
清华大学 https://pypi.tuna.tsinghua.edu.cn/simple/
中国科学技术大学 http://pypi.mirrors.ustc.edu.cn/simple/
执行以下命令升级:
[hadoop@s1 Python-3.6.4]$ cd /usr/local/python3/bin
[hadoop@s1 bin]$ sudo ./pip3 install --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple/
使用pip3安装tensorflow
将该文件传输到~/downloads
目录下
- 执行命令:
cd /usr/local/python3/bin
sudo ./pip3 install ~/downloads/tensorflow-1.1.0rc1-cp36-cp36m-manylinux1_x86_64.whl -i https://mirrors.aliyun.com/pypi/simple/
也可以使用pip install tensorflow命令安装,这种方式会安装最新版的
升级GLIBC_2.12 到GLIBC_2.17
升级原因:
进入python环境,导入tensorflow的包
>>> import tensorflow as tf
Traceback (most recent call last):
File "/usr/local/python3/lib/python3.6/site-packages/tensorflow/python/pywrap_tensorflow.py", line 41, in <module>
from tensorflow.python.pywrap_tensorflow_internal import *
File "/usr/local/python3/lib/python3.6/site-packages/tensorflow/python/pywrap_tensorflow_internal.py", line 28, in <module>
_pywrap_tensorflow_internal = swig_import_helper()
File "/usr/local/python3/lib/python3.6/site-packages/tensorflow/python/pywrap_tensorflow_internal.py", line 24, in swig_import_helper
_mod = imp.load_module('_pywrap_tensorflow_internal', fp, pathname, description)
File "/usr/local/python3/lib/python3.6/imp.py", line 243, in load_module
return load_dynamic(name, filename, file)
File "/usr/local/python3/lib/python3.6/imp.py", line 343, in load_dynamic
return _load(spec)
ImportError: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /usr/local/python3/lib/python3.6/site-packages/tensorflow/python/_pywrap_tensorflow_internal.so)
通过最后一句话可以看出运行这个版本的tensorflow需要GIBC_2.14
- 升级到GLIBC_2.17
下载glibc-2.17.tar.gz并上传到~/downloads
:
解压到当前压缩包所在的~/downloads
目录
执行以下命令:
cd ~/downloads/glibc-2.17
mkdir build //在glibc-2.17目录下建立build文件夹
cd build
../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin
make
sudo make install
升级CLIBCXX(可选)
上述步骤安装完成后,再次进入python环境测试:
import tensorflow as tf
Traceback (most recent call last):
File "/usr/local/python3/lib/python3.6/site-packages/tensorflow/python/pywrap_tensorflow.py", line 41, in <module>
from tensorflow.python.pywrap_tensorflow_internal import *
File "/usr/local/python3/lib/python3.6/site-packages/tensorflow/python/pywrap_tensorflow_internal.py", line 28, in <module>
_pywrap_tensorflow_internal = swig_import_helper()
File "/usr/local/python3/lib/python3.6/site-packages/tensorflow/python/pywrap_tensorflow_internal.py", line 24, in swig_import_helper
_mod = imp.load_module('_pywrap_tensorflow_internal', fp, pathname, description)
File "/usr/local/python3/lib/python3.6/imp.py", line 243, in load_module
return load_dynamic(name, filename, file)
File "/usr/local/python3/lib/python3.6/imp.py", line 343, in load_dynamic
return _load(spec)
ImportError: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.14' not found (required by /usr/local/python3/lib/python3.6/site-packages/tensorflow/python/_pywrap_tensorflow_internal.so)
如果仍然报错,且出现的错误为:ImportError: /usr/lib64/libstdc++.so.6: version GLIBCXX_3.4.14 not found (required by /usr/local/python3/lib/python3.6/site-packages/tensorflow/python/_pywrap_tensorflow_internal.so)
执行以下步骤:
- 下载libstdc++.so_.6.0.20(libstdc++.so.6.0.20 含GLIBCXX_3.4.15 - GLIBCXX_3.4.20)
- 最新动态库libstdc++.so.6.0.20复制到/usr/lib64目录下:
sudo cp ~/downloads/libstdc++.so.6.0.20 /usr/lib64
- 复制后,修改系统默认动态库的指向,即:重建默认库的软连接:
cd /usr/lib64
#删除原来软连接:
sudo rm -rf libstdc++.so.6
#将默认库的软连接指向最新动态库:
sudo ln -s libstdc++.so.6.0.20 libstdc++.so.6
测试tensorflow安装完成
进入python环境,输入:
import tensorflow as tf
sess = tf.Session()
hello=tf.constant('Hello,Tensorflow!')
print(sess.run(hello))
看到结果为:
说明安装处成功
centos7(以centos7.2演示)源码安装python3和tensorflow
安装gcc编译器及其他依赖包
[hadoop@s1 ~]$ python -V
Python 2.7.5
[hadoop@s1 ~]$ gcc -v
bash: gcc: command not found...
[hadoop@s1 ~]$ sudo yum install -y gcc zlib* openssl-devel
解压python3 并编译安装
- 在家目录下创建目录python3.6
- 解压~/downloads/Python-3.6.4.tgz 到家目录下的python3.6目录
[hadoop@s1 ~]$ tar -zxvf downloads/Python-3.6.4.tgz -C python3.6
- 安装Python3.6,安装目录为/usr/local/python3
cd python3.6 #小写的p
cd Python-3.6.4 #大写的P
./configure --prefix=/usr/local/python3 --with-ssl
- 编译 安装
make //编译
sudo make install //安装,必须加sudo
建立python3软链接
[hadoop@s1 Python-3.6.4]$ cd /usr/bin
[hadoop@s1 bin]$ sudo ln -s /usr/local/python3/bin/python3.6 python3
这样就可以在任何目录下执行命令python3
:
[hadoop@s1 bin]$ python3
Python 3.6.4 (default, Aug 30 2019, 14:08:43)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-23)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
安装tensorflow
升级pip3
cd /usr/local/python3/bin
sudo ./pip3 install --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple/
安装tensorflow
[hadoop@s1 bin]$ sudo ./pip3 install ~/downloads/tensorflow-1.1.0rc1-cp36-cp36m-manylinux1_x86_64.whl -i https://mirrors.aliyun.com/pypi/simple/
测试代码
进入python3
import tensorflow as tf
sess = tf.Session()
hello=tf.constant('Hello,Tensorflow!')
print(sess.run(hello))
安装成功!!!