在 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:
- 啟動終端。你需要在命令行中執行下面所有的步驟。
- 通過下面的命令安裝 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
$ source ~/tensorflow/bin/activate.csh # 如果使用 csh 或 tcsh
前面的 source
命令會將你的命令行提示更改為以下內容:
(tensorflow)$
- 確保安裝的 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 或 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.7pip3
, 對應 Python 3.n.
如果你安裝了 python,可能 pip
或 pip3
已經安裝在你的系統上了。為了確定它們是否真的安裝在系統里, 可以使用下面的命令:
$ 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 上已經安裝了依賴的軟體,請遵循下面的步驟:
- 通過下面的一個命令來安裝 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 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 中運行這個程序,將 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 bashn
下面的命令同樣是從一個 TensorFlow CPU 的鏡像啟動的容器。然而在這個容器中,你還可以在 Jupyter notebook 里 運行 TensorFlow 程序:
$ docker run -it -p 8888:8888 gcr.io/tensorflow/tensorflown
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 程序的運行環境。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
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]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 | 机器学习 | 人工智能 |