转载请注明出处:
http://www.cnblogs.com/darkknightzh/p/6592052.html
参考网址:
https://www.tensorflow.org/install/install_linux#InstallingAnaconda(需跨越绝境长城)
http://mbless.de/blog/2016/01/09/upgrade-to-python-2711-on-ubuntu-1404-lts.html
http://stackoverflow.com/questions/32856389/how-to-import-ssl-in-python-2-7-6
https://blog.liyang.io/301.html
http://stackoverflow.com/questions/8565695/error-compiling-gcc-4-6-2-under-ubuntu-11-10
http://stackoverflow.com/questions/35896335/how-can-i-uninstall-protobuf-3-0-0
https://github.com/tensorflow/tensorflow/issues/11
说明:本文不涉及手动编译tensorflow
注:ubuntu中使用conda安装tensorflow-gpu,网址:
https://www.cnblogs.com/darkknightzh/p/9834567.html
说明:python版本最好高一些,这边再ubuntu16.04上面直接安装成功,python版本为2.7.12;在ubuntu14.04上面安装失败,python版本为2.7.6,会提示snimissingwarning。
更新python版本:http://mbless.de/blog/2016/01/09/upgrade-to-python-2711-on-ubuntu-1404-lts.html
wget https://www.python.org/ftp/python/2.7.12/Python-2.7.12.tar.xz tar xfz Python-2.7.13.tgz cd Python-2.7.13/ ./configure --prefix /usr/local/lib/python2.7.13 make sudo make install
说明:1. 默认的话,python是不支持ssl的,http://stackoverflow.com/questions/32856389/how-to-import-ssl-in-python-2-7-6中林家访指出,修改Modules/Setup.dist文件(针对2.7.13,取消注释214,218,219,220,221行),则可以正常的sudo pip install了。
2. 由于没有建立链接,此时系统默认的python版本还是原来的。建立链接(http://www.jb51.net/article/94266.htm):
sudo mv /usr/bin/python /usr/bin/python2.7.6 sudo ln -fs /usr/local/lib/python2.7.13/bin/python /usr/bin/python
如需将python改回默认的2.7.6,终端中输入:
sudo mv /usr/bin/python2.7.6 /usr/bin/python)
之后在终端中输入sudo python --version,便是2.7.13了。
3. 更新python后,由于所有的模块均需要重新安装(略蛋疼,因而最好还是直接使用anaconda之类的吧。不用自己安装很多库。。。),因而首先安装pip。官网说python2.7.9以上的默认安装了pip,但是使用pip时,死活提示No module named pip。。。
按照http://www.cnblogs.com/haython/p/3970426.html中的步骤,终于成功安装pip
a 安装easy_install:https://pypi.python.org/pypi/ez_setup,解压、sudo python ez_setup.py
b 安装pip:https://pypi.python.org/pypi/pip,解压、sudo python setup.py install
上面这些是在ubuntu14.04里面遇到的,ubuntu16直接用第二步就行了。。。
二 安装tensorflow
https://www.tensorflow.org/install/install_linux
a. 如果有的话,卸载tensorflow:
pip uninstall tensorflow_gpu-1.0.1-cp27-none-linux_x86_64.whl
或者:
pip uninstall tensorflow_gpu
或者加上sudo
b. cuda版本为8.0(否则可能会提示找不到什么库,记不清了)
1. 更新pip(pip版本比较旧时最好更新)
pip install --upgrade pip
2. 安装wheel(已经安装的略过)
pip install wheel
3. 安装tensorflow
sudo pip install tensorflow-gpu
说明:a. 这条命令会先下载gpu版本的tensorflow,而后再安装。也可以直接下载(如tensorflow_gpu-1.0.1-cp27-none-linux_x86_64.whl),而后在该文件位置打开终端,直接输入
sudo pip install tensorflow_gpu-1.0.1-cp27-none-linux_x86_64.whl
b. 如果安装到系统目录,需要使用sudo;如果安装到anaconda之类的目录,不需要使用sudo。
4. 测试:终端中输入python
>>> import tensorflow as tf >>> hello = tf.constant('Hello, TensorFlow!') >>> sess = tf.Session() >>> sess.run(hello) Hello, TensorFlow! >>> a = tf.constant(10) >>> b = tf.constant(32) >>> sess.run(a+b) 42
可以正常使用了
三 可能遇到的问题
1. 如果直接在python中安装,提示找不到glibc_2.23
https://blog.liyang.io/301.html中指出,先下载glibc_2.23,然后编译。
wget http://ftp.gnu.org/gnu/glibc/glibc-2.14.tar.gz tar -zxvf glibc-2.14.tar.gz && cd glibc-2.14 && mkdir build && cd build ../configure --prefix=/opt/glibc-2.14 make -j4 make install export LD_LIBRARY_PATH=/opt/glibc-2.14/lib:$LD_LIBRARY_PATH
若编译的时候提示:
ld_library_path shouldn't contain the current directory when building glibc
http://stackoverflow.com/questions/8565695/error-compiling-gcc-4-6-2-under-ubuntu-11-10中hmb指出,
unset LIBRARY_PATH; ./configure
而后可以编译成功。
2. 第一次import tensorflow as tf,若提示下面的错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/xxx/anaconda2/lib/python2.7/site-packages/tensorflow/__init__.py", line 24, in <module>
from tensorflow.python import *
File "/home/xxx/anaconda2/lib/python2.7/site-packages/tensorflow/python/__init__.py", line 54, in <module>
from tensorflow.core.framework.graph_pb2 import *
File "/home/ xxx /anaconda2/lib/python2.7/site-packages/tensorflow/core/framework/graph_pb2.py", line 16, in <module>
from tensorflow.core.framework import node_def_pb2 as tensorflow_dot_core_dot_framework_dot_node__def__pb2
File "/home/ xxx /anaconda2/lib/python2.7/site-packages/tensorflow/core/framework/node_def_pb2.py", line 16, in <module>
from tensorflow.core.framework import attr_value_pb2 as tensorflow_dot_core_dot_framework_dot_attr__value__pb2
File "/home/ xxx /anaconda2/lib/python2.7/site-packages/tensorflow/core/framework/attr_value_pb2.py", line 16, in <module>
from tensorflow.core.framework import tensor_pb2 as tensorflow_dot_core_dot_framework_dot_tensor__pb2
File "/home/ xxx /anaconda2/lib/python2.7/site-packages/tensorflow/core/framework/tensor_pb2.py", line 16, in <module>
from tensorflow.core.framework import resource_handle_pb2 as tensorflow_dot_core_dot_framework_dot_resource__handle__pb2
File "/home/ xxx /anaconda2/lib/python2.7/site-packages/tensorflow/core/framework/resource_handle_pb2.py", line 22, in <module>
serialized_pb=_b('\n/tensorflow/core/framework/resource_handle.proto\x12\ntensorflow\"m\n\x0eResourceHandle\x12\x0e\n\x06\x64\x65vice\x18\x01\x01(\t\x12\x11\n\tcontainer\x18\x02\x01(\t\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x11\n\thash_code\x18\x04\x01(\x04\x12\x17\n\x0fmaybe_type_name\x18\x05 \x01(\tB4\n\x18org.tensorflow.frameworkB\x13ResourceHandleProtoP\x01\xf8\x01\x01\x62\x06proto3')
TypeError: __init__() got an unexpected keyword argument 'syntax'