【甘道夫】升级python2.6.6到2.7.8 ,安装scikit-learn-0.19.1,安装tensorflow

------------------升级Python2.6.6到2.7.8------------------
1.下载Python-2.7.8
wget https://www.python.org/ftp/python/2.7.8/Python-2.7.8.tgz
如果版本不同,自行查阅https://www.python.org/ftp/python/x.x.x/

2.解压Python-2.7.8
tar -zxvf Python-2.7.8.tgz

3.进入刚解压后的文件夹
cd Python-2.7.8

4.安装
$ ./configure
注意,为了支持tensorflow,需要带参数:./configure --enable-unicode=ucs4
$ sudo make all    
$ sudo make install
$ sudo make clean
$ sudo make distclean

5.查看版本信息
/usr/local/bin/python2.7 -V

6.建立软连接,使系统默认的python指向python2.7
正常情况下即使python2.7安装成功后,系统默认指向的python仍然是2.6.6版本,考虑到yum是基于python2.6.6才能正常工作,不敢轻易卸载。
如何实现将系统默认的python指向到2.7版本呢?
mv /usr/bin/python /usr/bin/python2.6.6
ln -s /usr/local/bin/python2.7 /usr/bin/python

7.解决系统python软链接指向python2.7版本后,yum不能正常工作
vi /usr/bin/yum
将文件头部的
#!/usr/bin/python
改成
#!/usr/bin/python2.6.6

整个升级过程完成,可以使用Python2.7.8版本了。

------------------安装scikit-learn-0.19.1------------------
1.基于get-pip.py安装pip
安装命令:sudo python get-pip.py
版本:
pip (9.0.2)
setuptools (39.0.1)
wheel (0.30.0)

2.安装numpy
安装命令:sudo pip install -i https://pypi.tuna.tsinghua.edu.cn/simple numpy
版本:numpy-1.14.2-cp27-cp27m-manylinux1_x86_64.whl

3.安装scipy
安装命令:sudo pip install -i https://pypi.tuna.tsinghua.edu.cn/simple scipy
版本:scipy-1.0.0

4.安装scikit-learn
安装命令:sudo pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -U scikit-learn
版本:scikit-learn-0.19.1

------------------安装tensorflow 1.6.0/1.4.0 CPU only版本------------------
使用清华镜像(用 mirrors.tuna.tsinghua.edu.cn 替代官方 storage.googleapis.com)
sudo pip install --upgrade https://mirrors.tuna.tsinghua.edu.cn/tensorflow/linux/cpu/tensorflow-1.6.0-cp27-none-linux_x86_64.whl

安装成功


进入python环境后通过import tensorflow命令测试是否能正常运行,可能会遇到以下错误:

【1】import验证时报错:ImportError: /lib64/libc.so.6: version `GLIBC_2.17' not found (required by /usr/local/lib/python2.7/site-packages/tensorflow/python/_pywrap_tensorflow_internal.so)
解决:
yum install gcc
wget http://ftp.gnu.org/pub/gnu/glibc/glibc-2.17.tar.xz
xz -d glibc-2.17.tar.xz
tar -xvf glibc-2.17.tar
cd glibc-2.17
mkdir build
cd build
../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin  
sudo make && sudo make install
需要等大概10分钟。
输入strings /lib64/libc.so.6|grep GLIBC发现已经更新 

【2】import时报错:ImportError: /usr/lib64/libstdc++.so.6: version `CXXABI_1.3.7' not found (required by /usr/local/lib/python2.7/site-packages/tensorflow/python/_pywrap_tensorflow_internal.so)
解决:
从网上下载libstdc++.so.6.0.20 
http://ftp.de.debian.org/debian/pool/main/g/gcc-4.8/
或者
http://download.csdn.net/detail/pomelover/7524227

放到/usr/lib64/下
#chmod +x libstdc++.so.6.0.20
#rm libstdc++.so.6
#ln -s libstdc++.so.6.0.20 libstdc++.so.6

【3】import时报错:

ImportError: /usr/local/lib/python2.7/site-packages/tensorflow/python/_pywrap_tensorflow_internal.so: undefined symbol: PyUnicodeUCS4_FromString

解决:这是由于你编译新版本python时没有带参数./configure --enable-unicode=ucs4,需要从该步开始重新编译安装python。
注意:重装python后可能需要重装包括numpy,scipy在内的所有通过pip安装的软件。


【4】import时报错Illegal instruction
有可能是当前tensorflow版本不兼容当前机器指令集,我遇到的情况是1.6.0版本总是报该错误,换成1.4.0版本就能import正常了:
sudo pip install --upgrade https://mirrors.tuna.tsinghua.edu.cn/tensorflow/linux/cpu/tensorflow-1.4.0-cp27-none-linux_x86_64.whl

******************验证******************
import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
print(sess.run(hello))

或者跑以下这段代码:
# !/usr/bin/env python
# encoding:UTF-8
import time
import tensorflow as tf
import numpy as np

# 使用 NumPy 生成假数据(phony data), 总共 100 个点.
x_data = np.float32(np.random.rand(2, 100)) # 随机输入
y_data = np.dot([0.100, 0.200], x_data) + 0.300

# 构造一个线性模型

b = tf.Variable(tf.zeros([1]))
W = tf.Variable(tf.random_uniform([1, 2], -1.0, 1.0))
y = tf.matmul(W, x_data) + b

# 最小化方差
loss = tf.reduce_mean(tf.square(y - y_data))
optimizer = tf.train.GradientDescentOptimizer(0.5)
train = optimizer.minimize(loss)

# 初始化变量
init = tf.global_variables_initializer()

# 启动图 (graph)
sess = tf.Session()
sess.run(init)

# 拟合平面
for step in xrange(0, 201):
    sess.run(train)
    if step % 20 == 0:
        print step, sess.run(W), sess.run(b)

# 得到最佳拟合结果 W: [[0.100  0.200]], b: [0.300]

猜你喜欢

转载自blog.csdn.net/u010967382/article/details/79626076
今日推荐