Skip to content

在 Ubuntu 上安装 TensorFlow

本指南将介绍如何在 Linux 的 Ubuntu 上安装 TensorFlow。虽然这些说明可能也适用于其他 Linux 版本,我们已经在满足以下条款的系统上进行了测试和支持:

  • 64 位台式机或笔记本电脑
  • Ubuntu 16.04 或更高版本

选择要安装的 TensorFlow

有以下的 TensorFlow 版本可供安装:

  • 仅有 CPU 支持的 TensorFlow。如果你的系统中没有 NVIDIA® GPU,你必须安装这个版本。此版本的 TensorFlow 通常更易于安装,因此即使你拥有 NVIDIA GPU,我们也建议你先安装此版本。
  • 含有 GPU 支持的 TensorFlow。TensorFlow 在 GPU 上运行通常要比在 CPU 上快。如果是在运行存在性能瓶颈应用而正好系统中有 NVIDIA GPU 符合要求,你应安装这个版本。详情请查看 TensorFlow GPU 支持

如何安装 TensorFlow

安装 TensorFlow 有如下几个可选方式:

在虚拟环境中使用 pip

要点:使用虚拟环境是推荐安装方式。

Virtualenv 工具是用于创建虚拟 Python 环境以便与同台物理机中的其他 Python 隔离开。在这个情景中,会在虚拟环境中安装 TensorFlow 及其依赖并只在虚拟环境 **activated(激活)**时可用。Virtualenv 提供了一种避免与系统其他部分产生冲突来安装运行 TensorFlow 的可靠方式。

1. 安装 Python, pip,以及 virtualenv

在 Ubuntu 上,Python 是自动安装的并且 pip 通常 也已安装。 确认 pythonpip 版本:

  python -V  # or: python3 -V
  pip -V     # or: pip3 -V

安装以下包到 Ubuntu 中:

  sudo apt-get install python-pip python-dev python-virtualenv   # for Python 2.7
  sudo apt-get install python3-pip python3-dev python-virtualenv # for Python 3.n

我们推荐使用 8.1 及以上版本的 pip。如果当前使用版本低于 8.1,请升级 pip

  sudo pip install -U pip

如果不是 Ubuntu 系统但安装有 setuptools,使用 easy_install 来安装 pip

  easy_install -U pip
2. 为虚拟环境创建一个目录并选择一个 Python 解释器。
  mkdir ~/tensorflow  # 工作目录
  cd ~/tensorflow
  # Choose one of the following Python environments for the ./venv directory:
  virtualenv --system-site-packages venv            # 使用默认 Python (Python 2.7)
  virtualenv --system-site-packages -p python3 venv # 使用 Python 3.n
3. 激活虚拟环境。

按照以下不同 shell 使用特定命令激活虚拟环境:

  source ~/tensorflow/venv/bin/activate      # bash、sh、ksh 或 zsh
  source ~/tensorflow/venv/bin/activate.csh  # csh 或 tcsh
  . ~/tensorflow/venv/bin/activate.fish      # fish

当虚拟环境激活后,shell 提示会显示为 (venv) $

4. 在虚拟环境中升级 pip

在激活虚拟环境后,升级 pip

(venv)$ pip install -U pip

在虚拟环境中安装其他 Python 包并不会影响 vurtualenv 外的包。

5. 在虚拟环境中安装 TensorFlow。

选择一个可用的 TensorFlow 包进行安装:

  • tensorflow — 适用于 CPU 的当前发布版本
  • tensorflow-gpu — 支持 GPU 的当前发布版本
  • tf-nightly — 适用于 CPU 的最新构建版本
  • tf-nightly-gpu — 支持 GPU 的最新构建版本

在激活虚拟环境后,使用 pip 安装包:

  pip install -U tensorflow

使用 pip list 查看虚拟环境中所有已安装包。 验证安装并查看版本:

(venv)$ python -c "import tensorflow as tf; print(tf.__version__)"

成功:TensorFlow 现已安装完成。

使用 deactivate 命令停用 Python 虚拟环境。

问题

如果以上步骤失败,可以尝试通过使用远程 pip 包的 URL 安装 TensorFlow 已编译文件:

(venv)$ pip install --upgrade remote-pkg-URL   # Python 2.7
(venv)$ pip3 install --upgrade remote-pkg-URL  # Python 3.n

remote-pkg-URL 取决于操作系统、Python 版本以及是否有 GPU 支持。从这里查看 URL 名称列表获取文件地址。

如果遇到问题,请查看一般安装问题

卸载 TensorFlow

如要卸载 TensorFlow,移除步骤 2 中你创建的 Virtualenv 目录即可:

  deactivate  # stop the virtualenv
  rm -r ~/tensorflow/venv

在系统环境下使用 pip 安装

使用 pip 在系统环境下安装 TensorFlow 包而不使用容器或虚拟环境隔离开。这种方式推荐在多系统环境中系统管理员想为其他用户提供可用的 TensorFlow 时使用。

由于系统环境下安装,它可能会与其他以 Python 为基础的安装环境产生冲突。但如果你理解 pip 以及你的 Python 环境,系统环境下 pip 安装时最便捷的方式。 . 查看 setup.py 必备包了解 TensorFlow 安装必需的包。

1. 安装 Python、pipvirtualenv

在 Ubuntu 上,Python 是自动安装的而 pip 通常 也已安装。 确认 pythonpip 版本:

  python -V  # or: python3 -V
  pip -V     # or: pip3 -V

安装以下包到 Ubuntu 中:

  sudo apt-get install python-pip python-dev   # for Python 2.7
  sudo apt-get install python3-pip python3-dev # for Python 3.n

我们推荐使用 8.1 及以上版本的 pip。如果当前使用版本低于 8.1,请升级 pip

  sudo pip install -U pip

如果不是 Ubuntu 系统但安装有 setuptools,使用 easy_install 来安装 pip

  easy_install -U pip
2. 在系统上安装 TensorFlow。

选择一个可用的 TensorFlow 包进行安装:

  • tensorflow — 适用于 CPU 的当前发布版本
  • tensorflow-gpu — 支持 GPU 的当前发布版本
  • tf-nightly — 适用于 CPU 的最新构建版本
  • tf-nightly-gpu — 支持 GPU 的最新构建版本

然后使用 pip 为 Python 2 或 3 安装以下包:

  sudo pip install -U tensorflow   # Python 2.7
  sudo pip3 install -U tensorflow  # Python 3.n

使用 pip list 查看虚拟环境中所有已安装包。 验证安装并查看版本:

  python -c "import tensorflow as tf; print(tf.__version__)"

成功:TensorFlow 现已安装完成。

问题

如果以上步骤失败,可以尝试通过使用远程 pip 包的 URL 安装 TensorFlow 已编译文件:

  sudo pip install --upgrade remote-pkg-URL   # Python 2.7
  sudo pip3 install --upgrade remote-pkg-URL  # Python 3.n

由于系统环境下安装,它可能会与其他以 Python 为基础的安装环境产生冲突。但如果你理解 pip 以及你的 Python 环境,系统环境下 pip 安装时最便捷的方式。 . 查看 setup.py 必备包了解 TensorFlow 安装必需的包。

卸载 TensorFlow

使用下面其中一条命令,将 TensorFlow 从你的系统中卸载:

  sudo pip uninstall tensorflow   # for Python 2.7
  sudo pip3 uninstall tensorflow  # for Python 3.n

配置一个 Docker 容器

Docker 能将 TensorFlow 安装环境与宿主机中的已有包完全隔离开。这个 Docker 容器包含 TensorFlow 及其所有依赖。需要注意的是这个 Docker 镜像可能会相当大(数百 MB)。如果在使用 Docker 时需要将 TensorFlow 并入一个更大的应用架构中你可以选择使用 Docker 安装。

使用以下步骤来使用 Docker 安装 TensorFlow:

  1. 按照 Docker 文档的描述在你的机器上安装 Docker。
  2. 可选项,按照 Docker 文档的描述创建一个 docker 用户组以便不使用 sudo 操作容器。(如果省略此步骤,你每次调用 Docker 命令时都需要使用 sudo。)
  3. 要想安装能够支持 GPU 的 TensorFlow 版本,需要先安装 nvidia-docker,这个存储在 github。
  4. 启动一个包含以下 已编译 TensorFlow 镜像的镜像。

本节的余下部分将讲解如何启动一个 Docker 容器。

CPU-only

要启动一个仅支持 CPU(表示没有 GPU 支持)的 Docker 容器。输入以下格式的一个命令:

$ docker run -it -p hostPort:containerPort TensorFlowCPUImage

详细解释:

  • 可选项,如果你准备以 Jupyter notebook 的方式运行 TensorFlow,要将都设为 。如果你想在容器中运行 TensorBoard,添加第二个 -p 参数,将都设为

  • 必须项。决定 Docker 容器。指定为以下选项之一:

    • ,已编译 TensorFlow 支持 CPU 的镜像。
    • ,最新的支持 CPU 的已编译 TensorFlow 镜像和源码。
    • ,特定版本(例如,1.1.0rc1)的支持 CPU 的已编译 TensorFlow 镜像。
    • ,特定版本(例如,1.1.0rc1)的支持 CPU 的已编译 TensorFlow 镜像和源码。

    TensorFlow 镜像可在 dockerhub 找到。

例如,下面的命令将最新的支持 CPU 的已编译 TensorFlow 镜像启动在一个能够在命令行中运行 TensorFlow 程序的 Docker 容器中:

$ docker run -it tensorflow/tensorflow bash

下面的命令也将最新的支持 CPU 的已编译 TensorFlow 镜像启动在 Docker 容器中。只不过,在这个 Docker 容器中,你可以在一个 Jupyter notebook 中运行 TensorFlow 程序:

$ docker run -it -p 8888:8888 tensorflow/tensorflow

Docker 会在你第一次启动这个容器时下载已编译 TensorFlow 镜像。

GPU 支持

想要启动一个带有 NVIDIA GPU 支持的 Docker 容器,输入以下格式的命令(这不需要任何本地 CUDA 安装环境支持):

$ nvidia-docker run -it -p hostPort:containerPort TensorFlowGPUImage

详细解释:

  • 可选项,如果你准备以 Jupyter notebook 的方式运行 TensorFlow,要将都设为
  • TensorFlowGPUImage 决定 Docker 容器。指定为以下选项之一:
    • ,最新的支持 GPU 的已编译 TensorFlow 镜像。
    • ,最新的支持 GPU 的已编译 TensorFlow 镜像和源码。
    • ,特定版本(例如,0.12.1)的支持 GPU 的已编译 TensorFlow 镜像。
    • ,特定版本(例如,0.12.1)的支持 GPU 的已编译 TensorFlow 镜像和源码。

我们推荐安装 latest 版本。例如,下面的命令将最新的支持 GPU 的已编译 TensorFlow 镜像启动在一个能够在命令行中运行 TensorFlow 程序的 Docker 容器中:

$ nvidia-docker run -it tensorflow/tensorflow:latest-gpu bash

下面的命令也将最新的支持 GPU 的已编译 TensorFlow 镜像启动在 Docker 容器中。只不过,在这个 Docker 容器中,你可以在一个 Jupyter notebook 中运行 TensorFlow 程序:

$ nvidia-docker run -it -p 8888:8888 tensorflow/tensorflow:latest-gpu

下面的命令会安装更早版本的 TensorFlow(0.12.1):

$ nvidia-docker run -it -p 8888:8888 tensorflow/tensorflow:0.12.1-gpu

Docker 会在你第一次启动容器时下载已编译 TensorFlow 镜像。更多细节请查看 TensorFlow docker 自述

下一步

现在你需要验证安装

在 Anaconda 中使用 pip

Anaconda 提供了 conda 模块来创建一个虚拟环境。但是,在 Anaconda 中,我们推荐使用 pip installconda install 命令来安装 TensorFlow。

注意:conda 是社区支持的包,它不是由 TensorFlow 团队官方维护的。由于它没有在最新的 TensorFlow 发布版本上测试,使用此包有一定未知风险。

按照如下步骤在 Anaconda 环境中安装 TensorFlow:

  1. 按照 Anaconda 下载网站 中的指导下载并安装 Anaconda。

  2. 通过以下命令建立一个叫做 的 conda 环境来运行某一版本的 Python:

$ conda create -n tensorflow pip python=2.7 # or python=3.3, etc.
  1. 使用如下命令来激活 conda 环境:
$ source activate tensorflow
 (tensorflow)$  # 这时你的前缀应该变成这样 
  1. 运行如下格式的命令来在你的 conda 环境中安装 TensorFlow:

    (tensorflow)$ pip install --ignore-installed --upgrade tfBinaryURL

    其中 tfBinaryURLTensorFlow Python 包的 URL。例如,如下命令安装了仅支持 CPU 的 Python 3.4 版本下的 TensorFlow:

      (tensorflow)$ pip install --ignore-installed --upgrade \
      https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.10.0-cp34-cp34m-linux_x86_64.whl 

验证你的安装

按照如下步骤验证你的 TensorFlow 安装:

  1. 确保你的环境可以运行 TensorFlow (即:若有虚拟环境应激活它)
  2. 执行一个简短的 TensorFlow 程序

准备你的环境

如果你是使用原生 pip,Virtualenv 或者 Anaconda 安装的,那么进行如下步骤:

  1. 开启一个终端。
  2. 如果是使用 Virtualenv 或 Anaconda 安装,激活你的容器。
  3. 如果使用的 TensorFlow 源码安装,跳转至任意路径,除了有 TensorFlow 源码的地方。

如果你是通过 Docker 安装的,开启一个你可以使用 bush 的 Docker 容器,

$ docker run -it tensorflow/tensorflow bash

执行一个简短的 TensorFlow 程序

在你的 shell 命令行中开启 Python:

$ python

在 Python 的交互式 shell 命令行中运行如下程序:

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

如果系统输出一下数据,那么代表着你已经准备好编写 TensorFlow 程序了:

Hello, TensorFlow!

如果系统输出了一个错误信息,见常见安装错误

如果你是机器学习的新手,我们推荐以下内容:

学习更多内容,请到 TensorFlow 教程

TensorFlow GPU 支持

注意:由于需要安装大量的必备库,推荐使用 Docker 安装而不是在宿主系统中直接安装。

以下 NVIDIA 硬件必须安装在你的系统中:

  • GPU 卡拥有 CUDA Compute Capability 3.5 或以上。查看 NVIDIA 文档获取受支持 GPU 卡列表。

以下 NVIDIA 软件必须安装在你的系统中:

  • GPU drivers。CUDA 9.0 需要 384.x 或更高。
  • CUDA Toolkit 9.0
  • cuDNN SDK (>= 7.0)。推荐使用 7.1 版本 is recommended。
  • CUPTI 随 CUDA Toolkit 一起,但你需要将它的路径添加到系统环境变量 LD_LIBRARY_PATH 中:export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/extras/CUPTI/lib64
  • 可选NCCL 2.2 在多块 GPU 中使用 TensorFlow。
  • 可选TensorRT 理论上可以为一些模型降低延时和吞吐。

要使用带有 CUDA Compute Capability 3.0 的 GPU,或其他较早版本的 NVIDIA 库,请查看通过源码安装 TensorFlow。如果使用 Ubuntu 16.04 或其他基于 Debian 的发行版 Linux,可通过 NVIDIA 安装包仓库使用 apt-get 简便地安装。

bash
# 添加 NVIDIA 安装包仓库。
sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/7fa2af80.pub
wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_9.1.85-1_amd64.deb
wget http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1604/x86_64/nvidia-machine-learning-repo-ubuntu1604_1.0.0-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu1604_9.1.85-1_amd64.deb
sudo dpkg -i nvidia-machine-learning-repo-ubuntu1604_1.0.0-1_amd64.deb
sudo apt-get update
# 安装可选包 NCCL 2.x.
sudo apt-get install cuda9.0 cuda-cublas-9-0 cuda-cufft-9-0 cuda-curand-9-0 \
  cuda-cusolver-9-0 cuda-cusparse-9-0 libcudnn7=7.1.4.18-1+cuda9.0 \
   libnccl2=2.2.13-1+cuda9.0 cuda-command-line-tools-9-0
# 可选性安装 TensorRT 运行时环境,但必须在上面 cuda 安装之后进行。
sudo apt-get update
sudo apt-get install libnvinfer4=4.1.2-1+cuda9.0

常见安装错误

我们依赖于 Stack Overflow 来编写 TensorFlow 的安装问题和它们的解决方案。下面的表格包含了 Stack Overflow 关于常见安装问题的回答。如果你遇见了其他的错误信息或者没有在表格中列出的安装问题,请在 Stack Overflow 上搜索。如果 Stack Overflow 中没有显示相关的错误信息,创建一个新的问题并加上 tensorflow 标签。

GitHub 或 Stack Overflow 链接报错信息
36159194
ImportError: libcudart.so.Version: cannot open shared object file:
  No such file or directory
41991101
ImportError: libcudnn.Version: cannot open shared object file:
  No such file or directory
36371137 and 这里
libprotobuf ERROR google/protobuf/src/google/protobuf/io/coded_stream.cc:207 A
  protocol message was rejected because it was too big (more than 67108864 bytes).
  To increase the limit (or to disable these warnings), see
  CodedInputStream::SetTotalBytesLimit() in google/protobuf/io/coded_stream.h.
35252888
Error importing tensorflow. Unless you are using bazel, you should
  not try to import tensorflow from its source directory; please exit the
  tensorflow source tree, and relaunch your python interpreter from
  there.
  
33623453
IOError: [Errno 2] No such file or directory: '/tmp/pip-o6Tpui-build/setup.py'
  
42006320
ImportError: Traceback (most recent call last):
  File ".../tensorflow/core/framework/graph_pb2.py", line 6, in module
  from google.protobuf import descriptor as _descriptor
  ImportError: cannot import name 'descriptor'
  
35190574
SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify
  failed
42009190
  Installing collected packages: setuptools, protobuf, wheel, numpy, tensorflow
  Found existing installation: setuptools 1.1.6
  Uninstalling setuptools-1.1.6:
  Exception:
  ...
  [Errno 1] Operation not permitted:'/tmp/pip-a1DXRT-uninstall/.../lib/python/_markerlib' 
  
36933958
  ...
  Installing collected packages: setuptools, protobuf, wheel, numpy, tensorflow
  Found existing installation: setuptools 1.1.6
  Uninstalling setuptools-1.1.6:
  Exception:
  ...
  [Errno 1] Operation not permitted:
  '/tmp/pip-a1DXRT-uninstall/System/Library/Frameworks/Python.framework/
   Versions/2.7/Extras/lib/python/_markerlib'
   

TensorFlow Python 软件包的网址

一些安装方法中需要 TensorFlow Python 包的 URL,你所声明的值取决下面三个因素:

  • 操作系统
  • Python 版本
  • CPU 还是 GPU 支持

这个部分记录了 Linux 相关安装的 URL 值。

Python 2.7

仅支持 CPU:

https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.10.0-cp27-none-linux_x86_64.whl

支持 GPU:

https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.10.0-cp27-none-linux_x86_64.whl

注意 GPU 支持需要符合 NVIDIA 对运行 GPU 支持版本的 TensorFlow 的要求 的软硬件要求。

Python 3.4

仅支持 CPU:

https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.10.0-cp34-cp34m-linux_x86_64.whl

支持 GPU:

https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.10.0-cp34-cp34m-linux_x86_64.whl

注意 GPU 支持需要符合 NVIDIA 对运行 GPU 支持版本的 TensorFlow 的要求 的软硬件要求。

Python 3.5

支持 CPU:

https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.10.0-cp35-cp35m-linux_x86_64.whl

GPU 支持:

https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.10.0-cp35-cp35m-linux_x86_64.whl

注意 GPU 支持需要符合 NVIDIA 对运行 GPU 支持版本的 TensorFlow 的要求 的软硬件要求。

Python 3.6

仅支持 CPU:

https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.10.0-cp36-cp36m-linux_x86_64.whl

GPU 支持:

https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.10.0-cp36-cp36m-linux_x86_64.whl

注意 GPU 支持需要符合 NVIDIA 对运行支持 GPU 版本的 TensorFlow 的条件的软硬件要求。 -->

基于 MIT 许可发布 共建 共享 共管