直接用pip3安装的tensorflow在运行代码时,总是会提醒另一种更加高效率的编译模式,很烦人,再加上据说在CPU上计算速度会加倍,于是就尝试用tensorflow的源码进行安装,主要参考了TensorFlow官方教程。

以下便是安装官方教程的步骤进行安装!!!
注意,本人的安装环境是ubuntu16.04,python3.6,tensorflow1.6, open-jdk8, bazel0.11.1

(一)决定要安装的TensorFlow类型

1.仅仅支持CPU的TensorFlow
2.支持GPU的TensorFlow

因为我的电脑没有GPU,所以安装仅支持CPU的TensorFlow

(二)从远程仓库拷贝TensorFlow源码

  在Terminal中直接运行: $ git clone https://github.com/tensorflow/tensorflow

下载了TensorFlow源码之后,你应该指定你需要的历史版本:

$ cd tensorflow
$ git checkout r1.6

这里我使用的是1.6的版本

(三)准备安装环境

  安装环境包括:

* bazel
* TensorFlow Python版的依赖包
* GPU支持包(可选的,这里我不需要这些包)

(1).安装Bazel

  1. 安装open-jdk8

sudo apt-get install openjdk-8-jdk 

  2.添加密钥

echo "deb [arch=amd64] http://storage.googleapis.com/bazel-apt stable jdk1.8" | sudo tee /etc/apt/sources.list.d/bazel.list
curl https://bazel.build/bazel-release.pub.gpg | sudo apt-key add -

  但是执行第二条curl时,我无法获得密钥,因为虚拟机无法访问google。所以我就现在本机直接访问https://bazel.build/bazel-release.pub.gpg 获得密钥,然后复制到虚拟机的Ubuntu中,然后再执行
sudo apt-key add bazel-release.pub.gpg 来添加密钥,成功之后会显示OK

  3.安装Bazel

sudo apt-get update && sudo apt-get install bazel

一旦已经安装成功,可以通过下面命令更新到更新的版本:

sudo apt-get upgrade bazel 

(2).安装TensorFlow的依赖包
  依赖包包括:numpy, dev, pip, wheel。使用下面命令安装:

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

对于GPU支持包,这里不做解释。

(四)安装配置

  我们需要进入到git下来的tensorflow文件,然后执行./configure来配置一些属性,这些配置是通过交互式选择来配置的。

  这里是最容易出现错误的地方,本人按照教程一直选择默认选项,结果后面制造pip包时出现了can not found numpy Module.就一直提示我找不到包。在./configure过程中,我们仅仅需要重点关注前两个配置,后面的默认即可。根据前两个配置,就可以解释为什么找不到numpy模块。

  第一个配置是:

lease specify the location of python. [Default is /usr/bin/python]: /usr/local/bin/python3.6

  这个问题是让你指定你的python执行程序的位置,默认是python,也就是python2.7。这里一定要注意,因为我没有使用系统自带的python2.7和python3.5,而是使用自己安装的python3.6(因为系统自带的python3.5编译已经固定了,有时我们需要在编译时加上一些选项,所以我用自己下载的,未编译版本的3.6),所以,python程序需要改为/usr/local/bin/python3.6.

  第二个配置是:

Found possible Python library paths:/usr/local/lib/python3.6/site-packages
Please input the desired Python library path to use.  Default is [/usr/local/lib/python3.6/site-packages]

  这里使用默认的,也就是/usr/local/lib/python3.6/site-packages,这个路径可以通过pip3 show numpy来显示。这个是我的python3.6对应的包库。

  只有正确的指明上面两个参数,后面的过程才不会出错。后面的一些配置都默认即可,完整配置如下:

Please specify the location of python. [Default is /usr/bin/python]: /usr/local/bin/python3.6Found possible Python library paths:/usr/local/lib/python3.6/site-packages
Please input the desired Python library path to use.  Default is [/usr/local/lib/python3.6/site-packages]Do you wish to build TensorFlow with jemalloc as malloc support? [Y/n]:
jemalloc as malloc support will be enabled for TensorFlow.Do you wish to build TensorFlow with Google Cloud Platform support? [Y/n]:
Google Cloud Platform support will be enabled for TensorFlow.Do you wish to build TensorFlow with Hadoop File System support? [Y/n]:
Hadoop File System support will be enabled for TensorFlow.Do you wish to build TensorFlow with Amazon S3 File System support? [Y/n]:
Amazon S3 File System support will be enabled for TensorFlow.Do you wish to build TensorFlow with Apache Kafka Platform support? [y/N]:
No Apache Kafka Platform support will be enabled for TensorFlow.Do you wish to build TensorFlow with XLA JIT support? [y/N]:
No XLA JIT support will be enabled for TensorFlow.Do you wish to build TensorFlow with GDR support? [y/N]:
No GDR support will be enabled for TensorFlow.Do you wish to build TensorFlow with VERBS support? [y/N]:
No VERBS support will be enabled for TensorFlow.Do you wish to build TensorFlow with OpenCL SYCL support? [y/N]:
No OpenCL SYCL support will be enabled for TensorFlow.Do you wish to build TensorFlow with CUDA support? [y/N]:
No CUDA support will be enabled for TensorFlow.Do you wish to build TensorFlow with MPI support? [y/N]:
No MPI support will be enabled for TensorFlow.Please specify optimization flags to use during compilation when bazel option "--config=opt" is specified [Default is -march=native]: Would you like to interactively configure ./WORKSPACE for Android builds? [y/N]:
Not configuring the WORKSPACE for Android builds.Preconfigured Bazel build configs. You can use any of the below by adding "--config=<>" to your build command. See tools/bazel.rc for more details.--config=mkl            # Build with MKL support.--config=monolithic     # Config for mostly static monolithic build.--config=tensorrt       # Build with TensorRT support.
Configuration finished

(五)制作pip包
  在第四步中,准确的配置好了python路径和python依赖包路径之后,直接运行:

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

来制作pip包,需要花费很长很长的时间,成功之后截图如下:

  制作好pip包之后,我们需要生成.whl文件,在tensorflow目录下,在Terminal中执行:

bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg

便会将生成.whl安装文件,并且输出到/tmp/tensorflow_pkg目录下.

(六)安装刚才制作的whl包

$ sudo pip3 install /tmp/tensorflow_pkg/tensorflow-1.6.0-py2-none-any.whl

(七)验证你的安装是否有效

  打开一个终端Terminal,输入python3, 然后输入以下代码:

# Python3
import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
print(sess.run(hello))

如果正常输出没有警告,则成功!如下图所示:

由于whl文件可以通用,如果大家和我环境差不多,可以向我问.whl文件用来安装。需要的可以留邮箱!!!

ubuntu16.04中源码安装仅仅支持CPU的TensorFlow相关推荐

  1. ubuntu16.04下源码安装arachni扫描器

    前段时候看一个对各开源扫描器的评测,arachni在综合评价上胜出.最近正好想研究一下arachni的源码,那就在ubuntu下先把玩一下.其实之前在kali和ubuntu下源码安装都失败了,这次算是 ...

  2. ubuntu16.04 kinetic 源码安装orocos-bfl

    不知道啥原因,下面两个安装orocos-bfl代码都提示无法定位到安装包 sudo apt-get install ros-kinetic-bfl sudo apt-get install libor ...

  3. 如何在ubuntu下安装detectron2_Ubuntu16.04从源码安装detectron2

    Ubuntu16.04从源码安装detectron2 准备工作 首先确保pytorch的cuda版本和系统的一致. 首先查看pytorch对应的cuda版本,通过conda list命令可以查看,我这 ...

  4. CentOS 7中源码安装MySQL 5.7.16 ----已测试验证

    最近在CentOS 7中源码安装MySQL 5.7.6+,发现MySQL5.7.6+以后的安装方式真的与以前版本的MySQL安装方式大大的不同呀.不自己安装一把,你都不知道不同之处在哪,下面这篇文章是 ...

  5. 源码安装mysql_CentOS 7中源码安装MySQL 5.7.16 (亲测成功)

    最近在CentOS 7中源码安装MySQL 5.7.16,发现MySQL5.7.6+以后的安装方式真的与以前版本的MySQL安装方式大大的不同呀.不自己安装一把,下面这篇文章是通过自己的安装过程总结的 ...

  6. 5.3.3.tat.gz php_一步步在LINUX中源码安装PHP运行平台

    一步步在LINUX中源码安装PHP运行平台 一步步在LINUX中源码安装PHP运行平台 本人是LINUX新手, 今天我们要学习一下如何在LINUX环境下安装PHP运行环境 目标:在LINUX环境下源码 ...

  7. MindSpore体验--在Windows10中源码安装

    MindSpore体验--在Windows10中源码安装(反面教材) 一直以来安装包都是直接pip intall,发现安装MindSpore的操作流程中教学了源码编译安装,借此学习一下使用源码安装. ...

  8. linux中源码安装node

    Linux上安装Node.js 直接使用已经编译好的包 node 官网已经把linux 下载版本更改为已经编译好的版本了,我们可以直接下载解压后使用: wget https://nodejs.org/ ...

  9. Bullet3-2.87在Ubuntu16.04下源码编译安装

    编译安装Bullet3-2.87 安装过程其实很简单,有多重源码安装方法,这里提供两种: 方法1: cd bullet3-2.87 mkdir build && cd build cm ...

最新文章

  1. 百度推送 android7.1,【SDK版本更新】Android SDK 5.7.1
  2. win7计算机不支持此接口,win7系统IIS服务器启动失败显示不支持此接口的解决方法...
  3. 社区电商平台小区乐获GGV领投超1亿美元融资
  4. 斯坦福CS229机器学习课程的数学基础(概率论)翻译完成
  5. Codeup-问题 A: 最长公共子序列
  6. SylixOS中select原理及使用分析
  7. ot协议是什么_OT的完整形式是什么?
  8. JAVA与DOM解析器基础 学习笔记
  9. 微信可以远程控制电脑吗_上车| 手机远程控制手机,还可以控制电脑
  10. 冬季美食不可少烤肉和火锅,最具诱惑的手绘肉食插画素材,让设计师勾引你的味蕾
  11. php mysql 非空_PHP-为什么mysql接受非空字段为null
  12. 我国第一个“法律语言语料库”
  13. c语言中两整数相除保留小数的方法
  14. 小微企业内部用服务器应该怎么选择配置
  15. Oracle存储过程语法记录
  16. NSIS (NullSoft Scriptable Install System)使用指北(超详细)
  17. OpenStack架构
  18. css+nth-child+无效,CSS nth-child()和:eq()在我的代码中不起作用
  19. Linux 计算机网络 从 ping 来初窥计算机网络
  20. 地图教程 | 扬州市棋牌室查询及分布地图

热门文章

  1. cakephp下整合kindeditor和ckplayer
  2. 用简单的代码测一测你是否真的了解:Asp.Net中的事件和委托的实现
  3. Windows XP减肥法
  4. 面试精讲之面试考点及大厂真题 - 分布式专栏 06 详细说下CAP分别代表什么含义吗
  5. 人工智能 - paddlepaddle飞桨 - 入门之安装教程
  6. Java异常处理: 缺包 ClassNotFound javax/xml/bind/JAXBException
  7. Windows10 部署 Sonarqube 代码质量管理平台
  8. Consul架构介绍
  9. 如何设计一个良好的接口
  10. 【Python】蟒蛇绘制