最近学习Tensorflow,记录一下安装过程。目前安装的是CPU版的

1、下载tensorflow源码

tensorflow是个开源库,在github上有源码,直接在上面下载。下载地址:https://github.com/tensorflow/tensorflow

2、安装python的一些依赖库

tensorflow支持C、C++和Python三种语言,但是它对Python的支持是最全面的,所以我们这里使用Python。Python的安装这里就赘述了。我这里安装的是python3,就以python3为例子了

sudo apt-get install python3-numpy python3-dev python3-pip python3-wheel

3、安装bazel

Bazel是从谷歌开源的自动化构建工具,谷歌内部绝大部分的应用都是通过它来编译的。

1)安装JDK8

安装Bazel,首先要安装JDK8

2)安装相关库

sudo apt-get install pkg-config zip g++ zlib1g-dev unzip python  

注意:上面有一个是zlib1g-dev,不是zliblg-dev

3)下载bazel

下载网址为https://github.com/bazelbuild/bazel/releases,有多个版本,下载名字为bazel-<version>-installer-linux-x86_64.sh的。

4)运行安装器

第一行是为了给该安装器添加执行权限

第二行是执行该安装器,后面的--user,表示把bazel安装到了$HOME/bin目录里面。

5)设置环境变量

上面提到把bazel安装到了$HOME/bin目录,这里是把该目录添加到默认目录里面了。在调用bazel的时候系统会到该目录里查找bazel

4、配置tensorflow编译环境

进入之前下载的tensorflow源码目录内

给配置文件configure添加执行权限

执行configure文件

大部分都选的n,根据自己需要选择

5、编译pip安装包

bazel build --config=opt //tensorflow/tools/pip_package:build_pip_package  

是在tensorflow文件中有些文件没有执行权限,添加执行权限就可以了

做完这些后,重新在编译,然后编译成功。编译了好长时间啊,大概要一个半小时左右。

6、生成pip安装包.whl文件

如上图中,安装包名字为 tensorflow-1.8.0-cp35-cp35m-linux_x86_64.whl

7、用pip安装pip安装生成的安装包

8、测试是否安装成功

Tips:在测试过程中,可能会出现如下错误:

不要着急,这个一般是因为当前目录下面有一个名字为tensorflow的文件,在导入的是后python会先当前目录的。就是把那个名字问tensorflow的文件当成了tensorflow模块所以会出错。换个名字或者放到其他目录就可以了。

Ubuntu16.04系统Tensorflow源码安装的更多相关文章

  1. Ubuntu16.04 / OpenCV / Python 源码安装

    为什么需要源码安装? 1. 对 Python 版的 OpenCV,Ubuntu 有两种安装方式: 源码安装:官网(https://opencv.org/releases.html)下载源代码,在机器上 ...

  2. centos 6x系统下源码安装mysql操作记录

    在运维工作中经常部署各种运维环境,涉及mysql数据库的安装也是时常需要的.mysql数据库安装可以选择yum在线安装,但是这种安装的mysql一般是系统自带的,版本方面可能跟需求不太匹配.可以通过源 ...

  3. TensorFlow源码安装

    前言 TensorFlow如果能二进制包安装,我真的不想选择自己编译,但是情况不由人,好不容易找到一台服务器,CPU不支持AVX指令集,安装的release版本运行到import tensorflow ...

  4. Tensorflow[源码安装时bazel行为解析]

    0. 引言 通过源码方式安装,并进行一定程度的解读,有助于理解tensorflow源码,本文主要基于tensorflow v1.8源码,并借鉴于如何阅读TensorFlow源码. 首先,自然是需要去b ...

  5. 解决Tensorflow源码安装的之后TensorBoard 无法使用的问题

    作者  cnblog 修雨轩陈 我是按照 Tensorflow 下 https://github.com/tensorflow/tensorflow/blob/master/tensorflow/g3 ...

  6. Ubuntu 14.04下从源码安装qt4.x

    转自:http://www.cnblogs.com/crazywangzx/p/3505293.html 1.到官网http://qt-project.org/downloads或者ftp://ftp ...

  7. Linux系统下源码安装rz/sz命令

    背景:在windows环境下,使用xshell远程连接公司内部做的一个类似centos的系统,但该linux系统yum install有问题,只能源码安装. root 账号登陆后,依次执行以下命令: ...

  8. Ubuntu16.04系统中Nmon的安装

    Nmon的安装,亲民的安装方法: apt install nmon 不再需要源码编译安装和下载文件到指定目录,解压再运行了.

  9. 解决 Ubuntu16.04 + opencv4.1 源码编译错误 Makefile:160: recipe for target 'all' failed

    最近源码编译 opencv,出现下面的错误 [ %] Built target opencv_dnn Makefile:: recipe for target 'all' failed google ...

随机推荐

  1. linux 安装weblogic(转载)

    整个过程大同小异,不再笔记,就摘了网上的一篇. 原文地址:http://www.cnblogs.com/walk-the-Line/p/5409094.html 一.安装weblogic10.3.6 ...

  2. netstat Recv-Q和Send-Q判断包在哪端

    通过netstat -anp可以查看机器的当前连接状态:   Active Internet connections (servers and established) Proto Recv-Q Se ...

  3. php+memcache实现的网站在线人数统计

    <?php $mc = new Memcache (); // 连接memcache $mc->connect ( ); // 获取 在线用户 IP 和 在线时间数据 $online_me ...

  4. apache log4j将日志保存在mongodb数据库中(转)

    og4j与mongodb整合 Mongo Java driver jar包 log4mongo-java jar包 配置log4j.properties文件,使之整合mongodb: #将Mongod ...

  5. 【C#-批量插入数据到数据库】DataTable数据批量插入数据的库三种方法:SqlCommand.EcecuteNonQurery(),SqlDataAdapter.Update(DataTable) ,SqlBulkCopy.WriteToServer(Datatable)

    第一种方法:使用SqlCommand.EcecuteNonQurery()  效率最慢 第二种方法:使用SqlDataAdapter.Update(DataTable)   效率次之 第三种方法:使用 ...

  6. RedisTemplate的各种操作(set、hash、list、string)

    RedisTemplate的各种操作(set.hash.list.string) 注入以下RedisTemplate @Autowired private RedisTemplate<Strin ...

  7. js中Array的sort方法

    Array.sort方法里需要传入一个参数,是一个function, 如果想要升序排序,就传入这样的一个function: function sortFunction(a,b){ return a-b ...

  8. jquery unload方法 语法

    jquery unload方法 语法 作用:当用户离开页面时,会发生 unload 事件.具体来说,当发生以下情况时,会发出 unload 事件:点击某个离开页面的链接在地址栏中键入了新的 URL使用 ...

  9. sql 用表组织数据

    一.四种完整性约束 1.实体完整性约束:不允许出现相同记录的数据 2.域完整性约束:对字段进行限定,不得插入不符合限定的数据 3.引用完整性:表与表之间的关系 4.自定义完整性约束:开发人员自己设定对 ...

  10. HashMap在什么场景下会由哪些内部方法导致线程不安全,至少给出一种场景

    一直以来只是知道HashMap是线程不安全的,但是到底HashMap为什么线程不安全,多线程并发的时候在什么情况下可能出现问题? HashMap底层是一个Entry数组,当发生hash冲突的时候,ha ...