本文出自 掘金翻译计划 正在组织翻译的 TensorFlow 官方文档。如果您有兴趣,欢迎 申请成为译者,学习完译者教程后,参与到文章和文档的翻译和及对当中。我们也正在招募 TensorFlow 译者,欢迎积极参加。
这篇指南说明如何在 macOS 上安装 TensorFlow。
注意:从 v1.2 开始,TensorFlow 不再为 macOS 提供 GPU 支持。
选择安装 TensorFlow 的方式
你必须选择使用哪种方式来安装 TensorFlow。有以下方式:
- virtualenv
- 原生 pip
- Docker
- 通过源码进行安装,详见这篇文档。
我们推荐使用 virtualenv 进行安装。 Virtualenv 是与其他 Python 开发隔离的虚拟 Python 环境,使得在同一台机器上不受其他 Python 程序的干扰。 在 virtualenv 安装过程中,你不仅要安装 TensorFlow,还需安装 TensorFlow 所需的软件包(其实很简单)。 要开始使用 TensorFlow,只需要『激活』虚拟环境。 总而言之,virtualenv 为安装和运行 TensorFlow 提供了一个安全可靠的机制。
使用本地的 pip 会在系统里直接安装 TensorFlow,无需任何容器或虚拟环境系统。然而由于本地安装并不是完全封闭的,因此本地安装可能会受到系统上其他基于 Python 安装软件的干扰,或者影响到这类软件。 此外,你可能还需要禁用系统完整性保护(SIP)才能进行本地安装。 但是,如果你了解 SIP、pip 和你本地的 Python 环境,那么使用本地 pip 安装会相对容易一些。
Docker 则会将 TensorFlow 安装与机器上的现有软件包完全隔离。 Docker 容器包含 TensorFlow 及其所有依赖项。 请注意,Docker 镜像可能非常大(几百 MB)。 如果你将 TensorFlow 集成到已经使用 Docker 的较大应用程序体系结构中,则可以选择 Docker 安装。
在 Anaconda 中,你可以使用 conda 来创建虚拟环境。但是,在 Anaconda 中,我们建议使用 pip install
而不是 conda install
命令来安装 TensorFlow。
注意: conda 包由社区提供支持,而非正式支持。也就是说,TensorFlow 团队既不测试也不维护 conda 包。 使用此包请自行承担相关风险。
通过 virtualenv 安装
通过执行下面的步骤来使用 Virtualenv 安装 TensorFlow:
-
启动终端。你需要在命令行中执行下面所有的步骤。
-
通过下面的命令安装 pip 和 virtualenv:
$ sudo easy_install pip $ pip install --upgrade virtualenv
-
通过执行下面的命令来创建虚拟环境:
$ virtualenv --system-site-packages targetDirectory # 对应 Python 2.7 $ virtualenv --system-site-packages -p python3 targetDirectory # 对应 Python 3.n
其中 targetDirectory 表示 virtualenv 目录树所在的顶层路径。 我们假设 targetDirectory 为
~/tensorflow
,但你也可以选择任何你喜欢的路径。 -
通过执行下面的命令来激活虚拟环境:
$ source ~/tensorflow/bin/activate # 如果使用 bash, sh, ksh 或 zsh
$ <b>source ~/tensorflow/bin/activate.csh</b> # 如果使用 csh 或 tcsh </pre>
前面的 `source` 命令会将你的命令行提示更改为以下内容:
<pre> (tensorflow)$ </pre>
复制代码
-
确保安装的 pip 版本大于或等于 8.1:
(tensorflow)$ easy_install -U pip
-
执行下面的命令会将 TensorFlow 及其全部依赖安装至 Virtualenv 环境中:
(tensorflow)$ pip install --upgrade tensorflow # 对应 Python 2.7 (tensorflow)$ pip3 install --upgrade tensorflow # 对应 Python 3.n
-
(可选)如果第 6 步失败了(通常可能是因为你使用的 pip 版本小于 8.1),你还可以通过下面的命令安装 TensorFlow:
$ pip install --upgrade tfBinaryURL # Python 2.7 $ pip3 install --upgrade tfBinaryURL # Python 3.n
其中 tfBinaryURL 指向 TensorFlow Python 软件包所在的 URL。 合适的 tfBinaryURL 取决于你的操作系统和 Python 版本。你可以在here 找到你系统所对应的 tfBinaryURL。 例如,如果你要在安装了 Python 2.7 的 macOS 上安装 TensorFlow,那么可以执行下面的命令:
$ pip3 install --upgrade \ https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-1.4.0rc0-py2-none-any.whl
如果你遇到了任何安装问题,请查看 常见安装问题.
下一步
安装 TensorFlow 之后,你需要 验证安装 来确保 TensorFlow 能够正常工作。
注意,每当你使用一个新的 Shell 来使用 TensorFlow 时,你必须激活 virtualenv 环境。 如果 virtualenv 环境没有被激活(即命令行提示符中没有 (tensorflow)
),使用下面的命令可以激活虚拟环境:
$ source ~/tensorflow/bin/activate # bash, sh, ksh 或 zsh $ source ~/tensorflow/bin/activate.csh # csh 或 tcsh
如果你的终端提示变成下面的样子,证明 TensorFlow 的环境已经激活:
(tensorflow)$
当 virtualenv 环境激活后,你就可以在 Shell 里运行 TensorFlow 程序了。
当你使用完 TensorFlow 后,你还可以解除虚拟环境:
(tensorflow)$ deactivate
这时命令行提示将会变回你激活虚拟环境之前的样子。
卸载 TensorFlow
如果你希望卸载 TensorFlow,只需要简单的删除你创建的目录树即可。例如:
$ rm -r ~/tensorflow
通过本地 pip 安装
我们已经将 TensorFlow 的二进制编译版上传到了 PyPI 中。因此你可以直接使用 pip 进行安装。setup.py 里要求的包 列出了 pip 需要安装或升级的包。
前置要求:Python
要安装 TensorFlow,你的系统必须至少包含一个以下版本的 Python:
- Python 2.7
- Python 3.3+
如果你的系统没有安装适当版本的 Python,那么赶紧安装吧。
在安装 Python 时,你可能需要关闭系统完整性保护(SIP)来允许安装非 Mac App Store 的程序。
前置要求:pip
Pip 能安装并管理 Python 编写的软件包。如果你想要通过本地 pip 进行安装,你的系统至少应该有包含下面命令中的一个:
pip
, 对应 Python 2.7pip3
, 对应 Python 3.n.
如果你安装了 python,可能 pip
或 pip3
已经安装在你的系统上了。为了确定它们是否真的安装在系统里, 可以使用下面的命令:
$ pip -V # 对应 Python 2.7 $ pip3 -V # 对应 Python 3.n
我们强烈推荐使用 8.1 或更高版本的 pip 或 pip3 来安装 TensorFlow。 如果你没有安装的话,可以通过下面的命令来升级当前的 pip:
$ sudo easy_install --upgrade pip $ sudo easy_install --upgrade six
安装 TensorFlow
假设你的 Mac 上已经安装了依赖的软件,请遵循下面的步骤:
-
通过下面的一个命令来安装 TensorFlow:
$ pip install tensorflow # Python 2.7; CPU 支持 $ pip3 install tensorflow # Python 3.n; CPU 支持
如果前面的命令执行完成了,那么接下来你应该 验证安装.
-
(可选)如果第 1 步失败了,那么可以通过下面的命令安装最新版的 TensorFlow:
$ sudo pip install --upgrade tfBinaryURL # Python 2.7 $ sudo pip3 install --upgrade tfBinaryURL # Python 3.n
其中 tfBinaryURL 指向 TensorFlow Python 软件包的所在 URL。 合适的 tfBinaryURL 取决于你的操作系统和 Python 版本。你可以在here 找到你系统所对应的 tfBinaryURL。 例如,如果你要在安装了 Python 2.7 的 macOS 上安装 TensorFlow,那么可以执行下面的命令:
$ pip3 install --upgrade \ https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-1.4.0rc0-py2-none-any.whl
下一步
TensorFlow 安装完成后,你应该验证安装是否能使 TensorFlow 正确工作。
卸载 TensorFlow
执行下面的命令可以卸载 TensorFlow:
$ pip uninstall tensorflow $ pip3 uninstall tensorflow
通过 Docker 安装
遵循下面的步骤可通过 Docker 安装 TensorFlow:
1. 安在你的机器上安装 Docker,请参考
[Docker 文档](https://docs.docker.com/engine/installation/#/on-macos-and-windows).
2. 从包含 TensorFlow 的镜像中创建并启动 Docker 容器。
复制代码
本节的其余部分将介绍如何启动Docker容器。
要启动包含 TensorFlow 镜像的 Docker 容器,请输入以下指令:
$ docker run -it -p hostPort:containerPort TensorFlowImage
其中:
-
-p hostPort:containerPort 可选。如果你想要在 shell 命令行中运行 TensorFlow,忽略这个选项。如果你想要在 Jupyter notebooks 中运行这个程序,将 hostPort 和 containerPort 都设置为
8888
。如果你想要运行包含 TensorBoard 的容器,增加第二个
-p
参数来指定宿主端口和容器端口为 6006。 -
TensorFlowImage 是必须的。它指定了你的 Docker 容器。你必须指定下面其中一个值:
gcr.io/tensorflow/tensorflow
: TensorFlow 二进制镜像。gcr.io/tensorflow/tensorflow:latest-devel
: TensorFlow 二进制镜像和源代码。
gcr.io
是谷歌容器仓库。注意,TensorFlow 镜像同样在 dockerhub 上可用。
例如,下面的命令从 TensorFlow CPU 镜像启动了一个 Docker 容器,从而你可以在这个命令行里执行 TensorFlow 程序:
$ docker run -it gcr.io/tensorflow/tensorflow bash
下面的命令同样是从一个 TensorFlow CPU 的镜像启动的容器。然而在这个容器中,你还可以在 Jupyter notebook 里 运行 TensorFlow 程序:
$ docker run -it -p 8888:8888 gcr.io/tensorflow/tensorflow
Docker 会在第一次启动容器时下载对应的镜像。
下一步
现在你应该验证安装。
通过 Anaconda 安装
Anaconda 的安装由社区提供,而非官方支持。
请按照下面的步骤在 Anaconda 环境中安装 TensorFlow:
-
按照Anaconda 下载网站中的指南来下载并安装 Anaconda。
-
调用以下命令新建一个名字叫 tensorflow 的 conda 环境来运行某一版本的 Python:
$ conda create -n tensorflow pip python=2.7 # or python=3.3, etc.
-
使用如下命令来激活 conda 环境:
$ source activate tensorflow (tensorflow)$ # Your prompt should change
-
运行如下格式的命令来在你的 conda 环境中安装 TensorFlow:
(tensorflow)$ pip install --ignore-installed --upgrade TF_PYTHON_URL
其中 TF_PYTHON_URL 是 TensorFlow Python 包的 URL。例如,如下命令安装了仅支持 CPU 的 Python 2.7 版本下的 TensorFlow:
(tensorflow)$ pip install --ignore-installed --upgrade \ https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-1.4.0rc0-py2-none-any.whl
验证安装
下面的步骤能够验证 TensorFlow 是否已正确安装:
1. 确定你已经具备了运行 TensorFlow 程序的运行环境。
2. 运行一个简短的 TensorFlow 程序。
复制代码
准备环境
如果你已经安装了 pip、virtualenv 或者 Anaconda,那么:
1. 运行终端。
2. 如果你使用 virtualenv 或 Anaconda 进行的安装,请激活你的容器。
3. 如果你是使用 TensorFlow 源码进行的安装,请切换到除了包含 TensorFlow 源码的任意目录下。
复制代码
如果你使用 Docker 进行安装,启动一个运行 bash 的 Docker 容器,例如:
$ docker run -it gcr.io/tensorflow/tensorflow bash
运行一个简短的 TensorFlow 程序
在命令行中输入下面的命令调用 Python:
$ python
在 Python 交互命令行环境中输入下面的代码:
# Python
import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
print(sess.run(hello))
复制代码
如果你的系统正确的输出了下面的内容,那么说明你已经正确安装了 TensorFlow:
Hello, TensorFlow!
如果你是 TensorFlow 新手,请参看 @{ 开始使用 TensorFlow}.
如果安装过程出现了错误,请看常见安装问题
常见安装问题
我们使用 Stack Overflow 来记录 TensorFlow 的安装问题及其解决方案。 下表列出了一些常见安装问题的 Stack Overflow 答案的链接。 如果你遇到下表中未列出的错误信息或其他安装问题,请在 Stack Overflow 中进行搜索。如果 Stack Overflow 没有相应的解决方案,请在 Stack Overflow 上询问一个有关它的新问题,并指定 tensorflow
标签。
Stack Overflow 链接 | 错误消息 |
---|---|
42006320 | ImportError: Traceback (most recent call last): File ".../tensorflow/core/framework/graph_pb2.py", line 6, in from google.protobuf import descriptor as _descriptor ImportError: cannot import name 'descriptor' |
33623453 | IOError: [Errno 2] No such file or directory: '/tmp/pip-o6Tpui-build/setup.py' |
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' |
33622019 | ImportError: No module named copyreg |
37810228 | During a pip install operation, the system returns: OSError: [Errno 1] Operation not permitted |
33622842 | An import tensorflow statement triggers an error such as the following:Traceback (most recent call last): File "", line 1, in File "/usr/local/lib/python2.7/site-packages/tensorflow/__init__.py", line 4, in from tensorflow.python import * ... File "/usr/local/lib/python2.7/site-packages/tensorflow/core/framework/tensor_shape_pb2.py", line 22, in serialized_pb=_b('\n,tensorflow/core/framework/tensor_shape.proto\x12\ntensorflow\"d\n\x10TensorShapeProto\x12-\n\x03\x64im\x18\x02 \x03(\x0b\x32 .tensorflow.TensorShapeProto.Dim\x1a!\n\x03\x44im\x12\x0c\n\x04size\x18\x01 \x01(\x03\x12\x0c\n\x04name\x18\x02 \x01(\tb\x06proto3') TypeError: __init__() got an unexpected keyword argument 'syntax' |
42075397 | A pip install command triggers the following error: ... You have not agreed to the Xcode license agreements, please run 'xcodebuild -license' (for user-level acceptance) or 'sudo xcodebuild -license' (for system-wide acceptance) from within a Terminal window to review and agree to the Xcode license agreements. ... File "numpy/core/setup.py", line 653, in get_mathlib_info RuntimeError: Broken toolchain: cannot link a simple C program |
TensorFlow 的 Python 包的 URL
一些安装方法中需要 TensorFlow Python 包的 URL,你所声明的值取决下面两个因素:
- 操作系统
- Python 版本
这个部分记录了 maxOS 相关安装的 URL 值
Python 2.7
https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-1.4.0rc0-py2-none-any.whl
Python 3.4、3.5 或 3.6
https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-1.4.0rc0-py3-none-any.whl
Protobuf 3.1 的 pip 包
除非你遇到了与 protobuf pip package 相关的问题,否则你可以直接跳过该部分。
注意:如果你的 TensorFlow 程序运行速度很慢,你可能有一个和 protobuf pip package 相关的问题。
TensorFlow pip 包依赖于 3.1 版本的 protobuf pip package。从 PyPI 下载的 protobuf pip package (使用pip install protobuf 命令) 是一个含有序列化、反序列化实现的纯 Python 库,可能比 C++ 的实现慢 10 到 50 倍。Protobuf 同时也支持针对 Python 包的一个二进制扩展,基于快速的 C++ 解析。这个扩展在纯 Python 的标准 pip 包中是没有的。我们已经创建了一个自定义的二进制 pip 包给含有二进制扩展的 protobuf。要安装自定义的二进制 protobuf pip package,执行如下的命令
-
对应 Python 2.7:
$ pip install --upgrade \ https://storage.googleapis.com/tensorflow/mac/cpu/protobuf-3.1.0-cp27-none-macosx_10_11_x86_64.whl
-
对应 Python 3.n:
$ pip3 install --upgrade \ https://storage.googleapis.com/tensorflow/mac/cpu/protobuf-3.1.0-cp35-none-macosx_10_11_x86_64.whl
安装此 protobuf 包将覆盖现有的 protobuf 包,能够修复下面的错误(注意,二进制 pip 包已经支持大于 64MB 的 protobufs):
[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.
掘金翻译计划 是一个翻译优质互联网技术文章的社区,文章来源为 掘金 上的英文分享文章。内容覆盖 Android、iOS、前端、后端、区块链、产品、设计、人工智能等领域,想要查看更多优质译文请持续关注 掘金翻译计划、官方微博、知乎专栏。