在 Mac OS X 上安装 TensorFlow
这个文档说明了如何在 Mac OS X 上安装 TensorFlow。
登录后复制
注意:从 1.2 版本开始,在 Mac OS X 上 TensorFlow 不再支持 GPU。1.
你可以选择一种方式安装 TensorFlow,支持下面的几种选择:
我们建议使用 virtualenv 安装。 virtualenv 是一个和其它 Python 项目开发隔离的虚拟 Python 环境,在同一台机器上不会干扰也不会被其它程序影响。virtualenv 安装过程中,你不仅仅安装了 TensorFlow 还有它的所有依赖包。(事实上这很简单)要开始使用 TensorFlow,你需要“启动” virtualenv 环境。总而言之,virtualenv 提供了一个安全可靠的 TensorFlow 安装和运行机制。
本地 pip 安装 TensorFlow 不经过任何容器或者虚拟环境系统直接装到了系统上,由于本地 pip 安装没被关闭,pip 安装会干扰或者影响系统上其它有 Python 依赖的安装。而且,如果要通过本地 pip 安装,你需要禁用系统完整性保护(SIP)。然而,如果你了解 SIP,pip 和 你的 Python 环境,本地 pip 安装相对容易执行。
Docker 可使 TensorFlow 的安装完全脱离于机器上的其它已存在的包,Docker 容器包括 TensorFlow 和它的所有依赖。注意 Docker 镜像可能很大(几百 M)。如果你已将 TensorFlow 集成到使用了 Docker 的大型应用架构中可以选择 Docker 安装。
选择 Anaconda,你可以使用 conda 创建一个虚拟环境,我们建议使用 pip install
命令而不是 coda install
命令安装 TensorFlow。
登录后复制
注意:coda 包是社区而不是官方支持,也就是说,TensorFlow 团队既不测试也不维护 conda 包,如果使用风险自己承担。1.
按照以下步骤安装 TensorFlow:
$ sudo easy_install pip$ sudo pip install --upgrade virtualenv
$ virtualenv --system-site-packages targetDirectory # for Python 2.7$ virtualenv --system-site-packages -p python3 targetDirectory # for Python 3.n
~/tensorflow
,但你可以选择任一目录。$ source ~/tensorflow/bin/activate # If using bash, sh, ksh, or zsh$ source ~/tensorflow/bin/activate.csh # If using csh or tcsh
(tensorflow)$
$ pip install --upgrade tensorflow # for Python 2.7$ pip3 install --upgrade tensorflow # for Python 3.n
$ pip install --upgrade tfBinaryURL # Python 2.7$ pip3 install --upgrade tfBinaryURL # Python 3.n
$ pip3 install --upgrade \https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-1.2.1-py2-none-any.whl
如果安装过程中遇到麻烦,参考 常见安装问题。
安装完成后,验证你的安装是否工作正常。
注意,每打开一个新的 shell 使用 TensorFlow 都必须激活虚拟环境。如果当前虚拟环境没有被激活(也就是提示符不是 tensorflow),执行以下任一命令:
登录后复制
$ source ~/tensorflow/bin/activate
# bash, sh, ksh, or zsh$ source ~/tensorflow/bin/activate.csh # csh or tcsh 1.2.
你的提示符变成下面这样说明 tensorflow 环境已经激活:
登录后复制
(tensorflow)$ 1.
当虚拟环境激活后,你可以在这个 shell 中运行 TensorFlow 程序。如果你不再使用 TensorFlow,可以通过下面命令退出环境:
登录后复制
(tensorflow)$ deactivate 1.
提示符将会恢复到默认的(在 PS1 中定义的)。
如果你想卸载 TensorFlow,简单地移除你创建的目录。例如:
登录后复制
$ rm -r ~/tensorflow 1.
我们已经将 TensorFlow 二进制文件上传到了 PyPI,因此你可以通过 pip 安装, REQUIRED_PACKAGES section of setup.py 文件列出了 pip 将要安装或升级的包。
要安装 TensorFlow,你的系统必须依据安装了以下任一 Python 版本:
如果你的系统还没有安装符合以上版本的 Python,现在安装。
安装 Python,你可能需要禁用系统完整性保护(SIP)来获得从 Mac App Store 外安装软件的许可。
Pip 安装和管理 Python写的软件包,如果你要使用本地 pip 安装,系统上必须安装下面的任一 pip 版本:
pip
, for Python 2.7
pip3
, for Python 3.n.
pip 或者 pip3 可能在你安装 Python 的时候已经安装了,执行以下任一命令确认系统上是否安装了 pip 或 pip3:
登录后复制
$ pip -V # for Python 2.7$ pip3 -V # for Python 3.n 1.2.
我们强烈建议使用 pip 或者 pip3 为 8.1 或者更新的版本安装 TensorFlow,如果没有安装,执行以下任一命令安装或更新:
登录后复制
$ sudo easy_install --upgrade pip$ sudo easy_install --upgrade six 1.2.
假设你的 Mac 上已经装好了必备的程序,按照以下步骤执行:
$ pip install tensorflow # Python 2.7; CPU support$ pip3 install tensorflow # Python 3.n; CPU support
$ sudo pip install --upgrade tfBinaryURL # Python 2.7$ sudo pip3 install --upgrade tfBinaryURL # Python 3.n
$ sudo pip3 install --upgrade \https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-1.2.1-py2-none-any.whl
安装完成后,验证你的安装是否工作正常。
如果要卸载 TensorFlow,执行下面的命令:
登录后复制
$ pip uninstall tensorflow$ pip3 uninstall tensorflow 1.2.
按照以下步骤使用 Docker 安装 TensorFlow:
本节剩下部分解释如何启动 Docker 容器。
要启动包含 TensorFlow 镜像的 Docker 容器,执行以下命令:
登录后复制
$ docker run -it -p hostPort:containerPort TensorFlowImage 1.
where:
8888
。如果你想在镜像中运行 TensorBoard,再添加一个-p
参数,hostPort 和 containerPort 都设置为 6006。gcr.io/tensorflow/tensorflow
: TensorFlow 二进制镜像,gcr.io/tensorflow/tensorflow:latest-devel
: TensorFlow 二进制镜像加源码。gcr.io
是 Goole 的容器注册表(?),注意部分 TensorFlow 也可以从 dockerhub 获取。
例如,下面的命令可以在 Docker 容器中启动一个 TensorFlow CPU 镜像,然后你可以在镜像的 shell 中运行 TensorFlow 程序:
登录后复制
$ docker run -it gcr.io/tensorflow/tensorflow bash1.
以下命令也可以在 Docker 容器中启动一个 TensorFlow CPU 镜像,然而,在这个 Docker 镜像中,你可以在 Jupyter notebook 中运行 TensorFlow 程序:
登录后复制
$ docker run -it -p 8888:8888 gcr.io/tensorflow/tensorflow1.
Docker 将会先下载 TensorFlow 镜像然后启动它。
现在可以验证你的 安装了。
Anaconda 安装只是社区而非官方支持
按照以下步骤在 Anaconda 环境中安装 TensorFlow:
tensorflow
的 conda 环境:$ conda create -n tensorflow
$ source activate tensorflow(tensorflow)$ # Your prompt should change
(tensorflow)$ pip install --ignore-installed --upgrade TF_PYTHON_URL
(tensorflow)$ pip install --ignore-installed --upgrade \https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-1.2.1-py2-none-any.whl
要验证你的 TensorFlow 安装,操作以下步骤:
如果你使用本地 pip, virtualenv 或者 Anaconda 安装,操作以下步骤:
如果通过 Docker 安装,启动一个运行 bash 的 Docker 容器,例如:
登录后复制
$ docker run -it gcr.io/tensorflow/tensorflow bash1.
在一个 shell 中执行 Python:
登录后复制
$ python1.
在 python 交互式 shell 中输入以下小程序:
登录后复制
# Pythonimport tensorflow as tfhello = tf.constant('Hello, TensorFlow!')sess = tf.Session()print(sess.run(hello))1.2.3.4.5.6.
如果系统输出以下内容,你可以开始写 TensorFlow 程序了:
登录后复制
Hello, TensorFlow!1.
如果你不熟悉 TensorFlow,参考 Getting Started with TensorFlow。
如果系统输出错误信息而不是欢迎语,参考 常见安装问题。
我们依据 Stack Overflow 记录 TensorFlow 安装问题和相应的解决方法。下面的表格包括 Stack Overflow 常见的安装问题回复链接,如果你遇到的错误信息或者其它安装问题不在表格中,请在 Stack Overflow 上搜索。如果 Stack Overflow 上没有你搜索的错误信息,提一个新问题并且打上 tensorflow
标签。
Stack Overflow Link | Error Message |
42006320 | ImportError: Traceback (most recent call last):File ".../tensorflow/core/framework/graph_pb2.py", line 6, in from google.protobuf import descriptor as _descriptorImportError: 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 aTerminal window to review and agree to the Xcode license agreements.... File "numpy/core/setup.py", line 653, in get_mathlib_info raise RuntimeError("Broken toolchain: cannot link a simple C program")RuntimeError: Broken toolchain: cannot link a simple C program |
一些安装方法需要 TensorFlow Python 包的 URL,值与三个方面有关(?):
本节记录了 Mac OS 安装相关的值
登录后复制
https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-1.2.1-py2-none-any.whl1.
登录后复制
https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-1.2.1-py3-none-any.whl1.
如果你没有遇到 protobuf pip 包相关的问题可以跳过本节。
注意:如果你的 TensorFlow 运行很慢,可能是和 protobuf pip 包有关的问题。
TensorFlow pip 包依赖 protobuf pip 3.1 版本的包,从 PyPI 下载的 protobuf pip 包(在调用 pip install protobuf
时)是一个仅包含 Python 的库,其中包含执行速度比 C++ 实现慢10 ~ 50 倍的原始序列化/反序列化的Python 实现。 Protobuf 还支持包含基于快速 C++ 的原语解析的 Python 包的二进制扩展,此扩展在标准的仅Python 专用 pip 包中不可用,我们为 protobuf 创建了一个包含二进制扩展名的自定义二进制 pip 包。要安装自定义二进制 protobuf pip 包,请调用以下命令之一:
$ pip install --upgrade \https://storage.googleapis.com/tensorflow/mac/cpu/protobuf-3.1.0-cp27-none-macosx_10_11_x86_64.whl
$ pip3 install --upgrade \https://storage.googleapis.com/tensorflow/mac/cpu/protobuf-3.1.0-cp35-none-macosx_10_11_x86_64.whl
安装这些 protobuf 包将会覆盖已安装的包,注意二进制 pip 包已经支持大于 64M 的 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),
seeCodedInputStream::SetTotalBytesLimit() in google/protobuf/io/coded_stream.h.1.2.3.4.
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删