[譯] 系列教程:在 macOS 中安裝 TensorFlow

本文出自 掘金翻譯計劃 正在組織翻譯的 TensorFlow 官方文檔。若是您有興趣,歡迎 申請成爲譯者,學習完譯者教程後,參與到文章和文檔的翻譯和及對當中。咱們也正在招募 TensorFlow 譯者,歡迎積極參加。前端


這篇指南說明如何在 macOS 上安裝 TensorFlow。python

注意:從 v1.2 開始,TensorFlow 再也不爲 macOS 提供 GPU 支持。android

選擇安裝 TensorFlow 的方式

你必須選擇使用哪一種方式來安裝 TensorFlow。有如下方式:ios

  • virtualenv
  • 原生 pip
  • Docker
  • 經過源碼進行安裝,詳見這篇文檔

咱們推薦使用 virtualenv 進行安裝。 Virtualenv 是與其餘 Python 開發隔離的虛擬 Python 環境,使得在同一臺機器上不受其餘 Python 程序的干擾。 在 virtualenv 安裝過程當中,你不只要安裝 TensorFlow,還需安裝 TensorFlow 所需的軟件包(其實很簡單)。 要開始使用 TensorFlow,只須要『激活』虛擬環境。 總而言之,virtualenv 爲安裝和運行 TensorFlow 提供了一個安全可靠的機制。git

使用本地的 pip 會在系統裏直接安裝 TensorFlow,無需任何容器或虛擬環境系統。然而因爲本地安裝並非徹底封閉的,所以本地安裝可能會受到系統上其餘基於 Python 安裝軟件的干擾,或者影響到這類軟件。 此外,你可能還須要禁用系統完整性保護(SIP)才能進行本地安裝。 可是,若是你瞭解 SIP、pip 和你本地的 Python 環境,那麼使用本地 pip 安裝會相對容易一些。github

Docker 則會將 TensorFlow 安裝與機器上的現有軟件包徹底隔離。 Docker 容器包含 TensorFlow 及其全部依賴項。 請注意,Docker 鏡像可能很是大(幾百 MB)。 若是你將 TensorFlow 集成到已經使用 Docker 的較大應用程序體系結構中,則能夠選擇 Docker 安裝。docker

在 Anaconda 中,你可使用 conda 來建立虛擬環境。可是,在 Anaconda 中,咱們建議使用 pip install 而不是 conda install 命令來安裝 TensorFlow。shell

注意: conda 包由社區提供支持,而非正式支持。也就是說,TensorFlow 團隊既不測試也不維護 conda 包。 使用此包請自行承擔相關風險。macos

經過 virtualenv 安裝

經過執行下面的步驟來使用 Virtualenv 安裝 TensorFlow:windows

  1. 啓動終端。你須要在命令行中執行下面全部的步驟。

  2. 經過下面的命令安裝 pip 和 virtualenv:

     $ sudo easy_install pip
    $ pip install --upgrade virtualenv 
  3. 經過執行下面的命令來建立虛擬環境:

     $ virtualenv --system-site-packages targetDirectory # 對應 Python 2.7
    $ virtualenv --system-site-packages -p python3 targetDirectory # 對應 Python 3.n
    

    其中 targetDirectory 表示 virtualenv 目錄樹所在的頂層路徑。 咱們假設 targetDirectory~/tensorflow,但你也能夠選擇任何你喜歡的路徑。

  4. 經過執行下面的命令來激活虛擬環境:

    $ source ~/tensorflow/bin/activate      # 若是使用 bash, sh, ksh 或 zsh
    
$ <b>source ~/tensorflow/bin/activate.csh</b>  # 若是使用 csh 或 tcsh </pre>

 前面的 `source` 命令會將你的命令行提示更改成如下內容:

 <pre> (tensorflow)$ </pre>
複製代碼
  1. 確保安裝的 pip 版本大於或等於 8.1:

     (tensorflow)$ easy_install -U pip
  2. 執行下面的命令會將 TensorFlow 及其所有依賴安裝至 Virtualenv 環境中:

     (tensorflow)$ pip install --upgrade tensorflow      # 對應 Python 2.7
    (tensorflow)$ pip3 install --upgrade tensorflow     # 對應 Python 3.n
    
  3. (可選)若是第 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.7
  • pip3, 對應 Python 3.n.

若是你安裝了 python,可能 pippip3 已經安裝在你的系統上了。爲了肯定它們是否真的安裝在系統裏, 可使用下面的命令:

$ 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 上已經安裝了依賴的軟件,請遵循下面的步驟:

  1. 經過下面的一個命令來安裝 TensorFlow:

     $ pip install tensorflow      # Python 2.7; CPU 支持
    $ pip3 install tensorflow     # Python 3.n; CPU 支持
    

    若是前面的命令執行完成了,那麼接下來你應該 驗證安裝.

  2. (可選)若是第 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 中運行這個程序,將 hostPortcontainerPort 都設置爲 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:

  1. 按照Anaconda 下載網站中的指南來下載並安裝 Anaconda。

  2. 調用如下命令新建一個名字叫 tensorflow 的 conda 環境來運行某一版本的 Python:

    $ conda create -n tensorflow pip python=2.7 # or python=3.3, etc.
  3. 使用以下命令來激活 conda 環境:

    $ source activate tensorflow
    (tensorflow)$  # Your prompt should change
  4. 運行以下格式的命令來在你的 conda 環境中安裝 TensorFlow:

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

    其中 TF_PYTHON_URLTensorFlow 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 新手,請參看 @{get_started/get_started 開始使用 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

raise 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.四、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.

掘金翻譯計劃 是一個翻譯優質互聯網技術文章的社區,文章來源爲 掘金 上的英文分享文章。內容覆蓋 AndroidiOS前端後端區塊鏈產品設計人工智能等領域,想要查看更多優質譯文請持續關注 掘金翻譯計劃官方微博知乎專欄

相關文章
相關標籤/搜索