在 macOS 中安裝 TensorFlow

本文出自 掘金翻譯計劃 正在組織翻譯的 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:

  1. 啟動終端。你需要在命令行中執行下面所有的步驟。
  2. 通過下面的命令安裝 pip 和 virtualenv:

$ sudo easy_install pip

$ pip install --upgrade virtualenv

  1. 通過執行下面的命令來創建虛擬環境:

$ virtualenv --system-site-packages targetDirectory # 對應 Python 2.7

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

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

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

$ source ~/tensorflow/bin/activate # 如果使用 bash, sh, ksh 或 zsh

$ source ~/tensorflow/bin/activate.csh # 如果使用 csh 或 tcsh

前面的 source 命令會將你的命令行提示更改為以下內容:

(tensorflow)$

  1. 確保安裝的 pip 版本大於或等於 8.1:

(tensorflow)$ easy_install -U pip

  1. 執行下面的命令會將 TensorFlow 及其全部依賴安裝至 Virtualenv 環境中:

(tensorflow)$ pip install --upgrade tensorflow # 對應 Python 2.7

(tensorflow)$ pip3 install --upgrade tensorflow # 對應 Python 3.n

  1. (可選)如果第 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

storage.googleapis.com/

如果你遇到了任何安裝問題,請查看 常見安裝問題.

下一步

安裝 TensorFlow 之後,你需要 驗證安裝 來確保 TensorFlow 能夠正常工作。

注意,每當你使用一個新的 Shell 來使用 TensorFlow 時,你必須激活 virtualenv 環境。 如果 virtualenv 環境沒有被激活(即命令行提示符中沒有 (tensorflow)),使用下面的命令可以激活虛擬環境:

$ source ~/tensorflow/bin/activate # bash, sh, ksh 或 zshn$ source ~/tensorflow/bin/activate.csh # csh 或 tcsh n

如果你的終端提示變成下面的樣子,證明 TensorFlow 的環境已經激活:

(tensorflow)$ n

當 virtualenv 環境激活後,你就可以在 Shell 里運行 TensorFlow 程序了。

當你使用完 TensorFlow 後,你還可以解除虛擬環境:

(tensorflow)$ deactivate n

這時命令行提示將會變回你激活虛擬環境之前的樣子。

卸載 TensorFlow

如果你希望卸載 TensorFlow,只需要簡單的刪除你創建的目錄樹即可。例如:

$ rm -r ~/tensorflow n

通過本地 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.7n$ pip3 -V # 對應 Python 3.n n

我們強烈推薦使用 8.1 或更高版本的 pip 或 pip3 來安裝 TensorFlow。 如果你沒有安裝的話,可以通過下面的命令來升級當前的 pip:

$ sudo easy_install --upgrade pipn$ sudo easy_install --upgrade six n

安裝 TensorFlow

假設你的 Mac 上已經安裝了依賴的軟體,請遵循下面的步驟:

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

$ pip install tensorflow # Python 2.7; CPU 支持

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

如果前面的命令執行完成了,那麼接下來你應該

驗證安裝.

  1. (可選)如果第 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

storage.googleapis.com/

下一步

TensorFlow 安裝完成後,你應該驗證安裝是否能使 TensorFlow 正確工作。

卸載 TensorFlow

執行下面的命令可以卸載 TensorFlow:

$ pip uninstall tensorflown$ pip3 uninstall tensorflow n

通過 Docker 安裝

遵循下面的步驟可通過 Docker 安裝 TensorFlow:

1. 安在你的機器上安裝 Docker,請參考 n [Docker 文檔](https://docs.docker.com/engine/installation/#/on-macos-and-windows).nn2. 從包含 TensorFlow 的鏡像中創建並啟動 Docker 容器。n

本節的其餘部分將介紹如何啟動Docker容器。

要啟動包含 TensorFlow 鏡像的 Docker 容器,請輸入以下指令:

$ docker run -it -p hostPort:containerPort TensorFlowImage n

其中:

  • -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 bashn

下面的命令同樣是從一個 TensorFlow CPU 的鏡像啟動的容器。然而在這個容器中,你還可以在 Jupyter notebook 里 運行 TensorFlow 程序:

$ docker run -it -p 8888:8888 gcr.io/tensorflow/tensorflown

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.

  1. 使用如下命令來激活 conda 環境:

$ source activate tensorflow

(tensorflow)$ # Your prompt should change

  1. 運行如下格式的命令來在你的 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

storage.googleapis.com/

驗證安裝

下面的步驟能夠驗證 TensorFlow 是否已正確安裝:

1. 確定你已經具備了運行 TensorFlow 程序的運行環境。n2. 運行一個簡短的 TensorFlow 程序。n

準備環境

如果你已經安裝了 pip、virtualenv 或者 Anaconda,那麼:

1. 運行終端。n2. 如果你使用 virtualenv 或 Anaconda 進行的安裝,請激活你的容器。n3. 如果你是使用 TensorFlow 源碼進行的安裝,請切換到除了包含 TensorFlow 源碼的任意目錄下。n

如果你使用 Docker 進行安裝,啟動一個運行 bash 的 Docker 容器,例如:

$ docker run -it gcr.io/tensorflow/tensorflow bashn

運行一個簡短的 TensorFlow 程序

在命令行中輸入下面的命令調用 Python:

$ pythonn

在 Python 交互命令行環境中輸入下面的代碼:

# Pythonnimport tensorflow as tfnhello = tf.constant(Hello, TensorFlow!)nsess = tf.Session()nprint(sess.run(hello))n

如果你的系統正確的輸出了下面的內容,那麼說明你已經正確安裝了 TensorFlow:

Hello, TensorFlow!n

如果你是 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):nFile ".../tensorflow/core/framework/graph_pb2.py", line 6, in nfrom google.protobuf import descriptor as _descriptornImportError: cannot import name descriptorn

33623453

IOError: [Errno 2] No such file or directory:n /tmp/pip-o6Tpui-build/setup.pyn

35190574

SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verifyn failedn

42009190

Installing collected packages: setuptools, protobuf, wheel, numpy, tensorflown Found existing installation: setuptools 1.1.6n Uninstalling setuptools-1.1.6:n Exception:n ...n [Errno 1] Operation not permitted:n /tmp/pip-a1DXRT-uninstall/.../lib/python/_markerlib n

33622019

ImportError: No module named copyregn

37810228During a pip install operation, the system returns:

OSError: [Errno 1] Operation not permittedn

33622842An import tensorflow statement triggers an error such as the following:

Traceback (most recent call last):n File "", line 1, in n File "/usr/local/lib/python2.7/site-packages/tensorflow/__init__.py",n line 4, in n from tensorflow.python import *n ...n File "/usr/local/lib/python2.7/site-packages/tensorflow/core/framework/tensor_shape_pb2.py",n line 22, in n serialized_pb=_b(n,tensorflow/core/framework/tensor_shape.protox12ntensorflow"dnx10TensorShapeProtox12-nx03x64imx18x02n x03(x0bx32n .tensorflow.TensorShapeProto.Dimx1a!nx03x44imx12x0cnx04sizex18x01n x01(x03x12x0cnx04namex18x02 x01(tbx06proto3)n TypeError: __init__() got an unexpected keyword argument syntaxn

42075397A pip install command triggers the following error:

...nYou have not agreed to the Xcode license agreements, please runnxcodebuild -license (for user-level acceptance) ornsudo xcodebuild -license (for system-wide acceptance) from within anTerminal window to review and agree to the Xcode license agreements.n...n File "numpy/core/setup.py", line 653, in get_mathlib_infonraise RuntimeError("Broken toolchain: cannot link a simple C program")nnRuntimeError: Broken toolchain: cannot link a simple C programn

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.whln

Python 3.4、3.5 或 3.6

https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-1.4.0rc0-py3-none-any.whln

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

storage.googleapis.com/

  • 對應 Python 3.n:

$ pip3 install --upgrade

storage.googleapis.com/

安裝此 protobuf 包將覆蓋現有的 protobuf 包,能夠修復下面的錯誤(注意,二進位 pip 包已經支持大於 64MB 的 protobufs):

[libprotobuf ERROR google/protobuf/src/google/protobuf/io/coded_stream.cc:207]nA protocol message was rejected because it was too big (more than 67108864 bytes).nTo increase the limit (or to disable these warnings), seenCodedInputStream::SetTotalBytesLimit() in google/protobuf/io/coded_stream.h.n


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

推薦閱讀:

TAG:TensorFlow | 机器学习 | 人工智能 |