zoukankan      html  css  js  c++  java
  • (原)ubuntu中安装tensorflow

    转载请注明出处:

    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/33622842/error-in-python-after-import-tensorflow-typeerror-init-got-an-unexpect

    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

    说明: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,取消注释214218,219220221行),则可以正常的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_installhttps://pypi.python.org/pypi/ez_setup,解压、sudo python ez_setup.py

    b 安装piphttps://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-10hmb指出,

    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('
    /tensorflow/core/framework/resource_handle.protox12
    tensorflow"m
    x0eResourceHandlex12x0e
    x06x64x65vicex18x01x01(	x12x11
    	containerx18x02x01(	x12x0c
    x04namex18x03 x01(	x12x11
    	hash_codex18x04x01(x04x12x17
    x0fmaybe_type_namex18x05 x01(	B4
    x18org.tensorflow.frameworkBx13ResourceHandleProtoPx01xf8x01x01x62x06proto3')
    TypeError: __init__() got an unexpected keyword argument 'syntax'
    View Code

    再次输入后,提示:

    >>> 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 51, in <module>
        from tensorflow.python import pywrap_tensorflow
    ImportError: cannot import name pywrap_tensorflow
    View Code

     对于第二个次出现的问题,很多人说是当前工作目录不能在tensorflow的目录内。但是实际上这边没有在该文件夹内。主要还是第一次import的错误没有解决。

    第一次的错误,好多网址,如http://stackoverflow.com/questions/33622842/error-in-python-after-import-tensorflow-typeerror-init-got-an-unexpect最佳答案说是电脑上安装了多个版本的protobuf。我这边开始使用sudo pip uninstall protobuf(或者不加sudo),某一次意外的把protobuf2.5卸载了。但是还是有这个问题。

    之后http://stackoverflow.com/questions/35896335/how-can-i-uninstall-protobuf-3-0-0最佳答案指出,如果电脑是make安装的protobuf,需要定位到protobuf编译文件夹,使用make uninstall(或者加上sudo)来卸载。通过这种方法卸载后,使用protoc --version时,提示sudo apt-get install protobuf-compiler。说明已经成功卸载。

    之后按照中https://github.com/tensorflow/tensorflow/issues/11vrv说的,python中输入

    import google.protobuf
    print google.protobuf.__version__

    输出为3.2.0。说明python中protobuf可以用。

    上面网址中liuyipei指出的,终端中输入pip show protobuf,显示:

    才意识到,之前曾经安装过protobuf 2.6.1,虽然卸载了2.6.1,但是没有删除2.6.1编译时的文件夹(不清楚为何prptobuf还能使用)。删除了该文件夹之后,顺便把protobuf3.2的安装文件夹也删除了。。。

    =========================================================

    170322更新:

    今天无意中发现(不记得什么时候添加的了。。。),.bashrc文件内,有

    export PYTHONPATH=/home/xxx/protobuf-2.6.1/python:$PYTHONPATH

    之前找到该文件夹,可能和这个有关系吧。删了这句话。。。

    170322更新结束

    =========================================================

    之后在输入pip show protobuf后,显示为:

    再次在python中import tensorflow as tf后,终于成功了。运行官方最简单的例子,也能成功。

    不清楚把系统的protobuf给删了,重启会不会有问题吧。。。以前删过自己电脑上的protobuf,貌似进不去系统了。。。

  • 相关阅读:
    中文排版CSS心得
    用SHA1或MD5 算法加密数据(示例:对用户身份验证的简单实现)
    Linux 下忘记root密码怎么办
    CSS手册简编
    SC 命令
    DataGrid的数据导入到Excel或CSV
    asp中关于'+'的特殊处理
    卡巴斯基汇总收藏版
    一步一步学习BI(2)Integration Services简单ETL工程
    优化递归的效率zz
  • 原文地址:https://www.cnblogs.com/darkknightzh/p/6592052.html
Copyright © 2011-2022 走看看