從原始碼建構 TensorFlow pip 套件,並在 Windows 上安裝。
Windows 設定
安裝下列建構工具,以設定您的 Windows 開發環境。
安裝 Python 和 TensorFlow 套件相依性
安裝 適用於 Windows 的 Python 3.9+ 64 位元版本。選取 pip 作為選用功能,並將其新增至 %PATH%
環境變數。
安裝 TensorFlow pip 套件相依性
pip3 install -U pip
pip3 install -U six numpy wheel packaging
pip3 install -U keras_preprocessing --no-deps
相依性列在 setup.py
檔案的 REQUIRED_PACKAGES
下。
安裝 Bazel
安裝 Bazel,這是用於編譯 TensorFlow 的建構工具。如需 Bazel 版本,請參閱 Windows 的已測試建構設定。設定 Bazel 以建構 C++。
將 Bazel 可執行檔的位置新增至 %PATH%
環境變數。
安裝 MSYS2
安裝 MSYS2 以取得建構 TensorFlow 所需的 bin 工具。如果 MSYS2 安裝在 C:\msys64
,請將 C:\msys64\usr\bin
新增至 %PATH%
環境變數。然後,使用 cmd.exe
執行
pacman -Syu (requires a console restart) pacman -S git patch unzip pacman -S git patch unzip rsync
安裝 Visual C++ Build Tools 2022
安裝 Visual C++ Build Tools 2022。這隨附於 Visual Studio Community 2022,但可個別安裝
- 前往 Visual Studio 下載,
- 選取 Visual Studio 的工具或其他工具、架構和可轉散發元件,
- 下載並安裝
- Visual Studio 2022 的 Build Tools
- Microsoft Visual C++ 可轉散發套件 (適用於 Visual Studio 2022)
安裝 LLVM
- 前往 LLVM 下載,
- 在 C:/Program Files/LLVM 中下載並安裝與 Windows 相容的 LLVM,例如 LLVM-17.0.6-win64.exe
安裝 GPU 支援 (選用)
請參閱 Windows GPU 支援指南,以安裝在 GPU 上執行 TensorFlow 所需的驅動程式和其他軟體。
下載 TensorFlow 原始碼
使用 Git 複製 TensorFlow 儲存庫 (git
隨 MSYS2 一起安裝)
git clone https://github.com/tensorflow/tensorflow.git
cd tensorflow
儲存庫預設為 master
開發分支。您也可以查看 發布分支以進行建構
git checkout branch_name # r1.9, r1.10, etc.
選用:環境變數設定
在執行建構命令之前,請執行下列命令,以避免套件建立發生問題:(如果在安裝套件時已設定下列命令,請忽略這些命令)。執行 set
以檢查是否已正確設定所有路徑,執行 echo %Environmental Variable%
,例如 echo %BAZEL_VC%
以檢查特定環境變數的路徑設定
Python 路徑設定問題 tensorflow:issue#59943、tensorflow:issue#9436、tensorflow:issue#60083
set PATH=path/to/python;%PATH% # [e.g. (C:/Python311)] set PATH=path/to/python/Scripts;%PATH% # [e.g. (C:/Python311/Scripts)] set PYTHON_BIN_PATH=path/to/python_virtualenv/Scripts/python.exe set PYTHON_LIB_PATH=path/to/python virtualenv/lib/site-packages set PYTHON_DIRECTORY=path/to/python_virtualenv/Scripts
Bazel/MSVC/CLANG 路徑設定問題 tensorflow:issue#54578
set BAZEL_SH=C:/msys64/usr/bin/bash.exe set BAZEL_VS=C:/Program Files/Microsoft Visual Studio/2022/BuildTools set BAZEL_VC=C:/Program Files/Microsoft Visual Studio/2022/BuildTools/VC set Bazel_LLVM=C:/Program Files/LLVM (explicitly tell Bazel where LLVM is installed by BAZEL_LLVM, needed while using CLANG) set PATH=C:/Program Files/LLVM/bin;%PATH% (Optional, needed while using CLANG as Compiler)
選用:設定建構
TensorFlow 建構是由儲存庫根目錄中的 .bazelrc
檔案設定。 ./configure
或 ./configure.py
指令碼可用於調整常見設定。
如果您需要變更設定,請從儲存庫的根目錄執行 ./configure
指令碼。
python ./configure.py
此指令碼會提示您輸入 TensorFlow 相依性的位置,並詢問其他建構設定選項 (例如,編譯器旗標)。以下顯示 python ./configure.py
的範例執行 (您的工作階段可能會有所不同)
建構並安裝 pip 套件
pip 套件分兩個步驟建構。bazel build
命令會建立「套件建構器」程式。然後,您執行套件建構器以建立套件。
建構套件建構器
tensorflow:master 儲存庫已更新為預設建構 2.x。安裝 Bazel 並使用 bazel build
建立 TensorFlow 套件建構器。
bazel build //tensorflow/tools/pip_package:wheel
僅限 CPU
使用 bazel
製作僅限 CPU 支援的 TensorFlow 套件建構器
使用 MSVC 建構
bazel build --config=opt --repo_env=TF_PYTHON_VERSION=3.11 //tensorflow/tools/pip_package:wheel --repo_env=WHEEL_NAME=tensorflow_cpu
使用 CLANG 建構
使用 --config=win_clang
以 CLANG 編譯器建構 TenorFlow
bazel build --config=win_clang --repo_env=TF_PYTHON_VERSION=3.11 //tensorflow/tools/pip_package:wheel --repo_env=WHEEL_NAME=tensorflow_cpu
GPU 支援
若要製作具備 GPU 支援的 TensorFlow 套件建構器
bazel build --config=opt --config=cuda --define=no_tensorflow_py_deps=true //tensorflow/tools/pip_package:build_pip_package
清除 bazel 快取的命令,以解決因快取資料無效或過時而造成的錯誤,含 --expunge 旗標的 bazel clean 會永久移除檔案
bazel clean bazel clean --expunge
Bazel 建構選項
在建構時使用此選項,以避免套件建立發生問題:tensorflow:issue#22390
--define=no_tensorflow_py_deps=true
從原始碼建構 TensorFlow 可能會使用大量 RAM。如果您的系統記憶體受限,請使用 --local_ram_resources=2048
限制 Bazel 的 RAM 使用量。
如果使用 GPU 支援建構,請新增 --copt=-nvcc_options=disable-warnings
以隱藏 nvcc 警告訊息。
建構套件
若要建構 pip 套件,您需要指定 --repo_env=WHEEL_NAME 旗標。套件將根據提供的名稱建立。例如
若要建構 tensorflow CPU 套件
bazel build //tensorflow/tools/pip_package:wheel --repo_env=WHEEL_NAME=tensorflow_cpu
若要建構 nightly 套件,請設定 tf_nightly
而不是 tensorflow
,例如,若要建構 CPU nightly 套件
bazel build //tensorflow/tools/pip_package:wheel --repo_env=WHEEL_NAME=tf_nightly_cpu
因此,產生的 wheel 將位於
bazel-bin/tensorflow/tools/pip_package/wheel_house/
安裝套件
產生的 .whl
檔案名稱取決於 TensorFlow 版本和您的平台。使用 pip install
安裝套件,例如
pip install bazel-bin/tensorflow/tools/pip_package/wheel_house/tensorflow-version-tags.whl
使用 MSYS Shell 建構
TensorFlow 也可以使用 MSYS Shell 建構。進行下列列出的變更,然後按照先前適用於 Windows 原生命令列 (cmd.exe
) 的指示操作。
停用 MSYS 路徑轉換
MSYS 會自動將看起來像 Unix 路徑的引數轉換為 Windows 路徑,而這不適用於 bazel
。(標籤 //path/to:bin
會被視為 Unix 絕對路徑,因為它以斜線開頭。)
export MSYS_NO_PATHCONV=1
export MSYS2_ARG_CONV_EXCL="*"
設定您的 PATH
將 Bazel 和 Python 安裝目錄新增至 $PATH
環境變數。如果 Bazel 安裝在 C:\tools\bazel.exe
,而 Python 安裝在 C:\Python\python.exe
,請使用下列命令設定您的 PATH
# Use Unix-style with ':' as separatorexport PATH="/c/tools:$PATH"
export PATH="/c/path/to/Python:$PATH"
如需 GPU 支援,請將 CUDA 和 cuDNN bin 目錄新增至 $PATH
export PATH="/c/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.0/bin:$PATH"
export PATH="/c/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.0/extras/CUPTI/libx64:$PATH"
export PATH="/c/tools/cuda/bin:$PATH"
已測試建構設定
CPU
版本 | Python 版本 | 編譯器 | 建構工具 |
---|---|---|---|
tensorflow-2.16.1 | 3.9-3.12 | CLANG 17.0.6 | Bazel 6.5.0 |
tensorflow-2.15.0 | 3.9-3.11 | MSVC 2019 | Bazel 6.1.0 |
tensorflow-2.14.0 | 3.9-3.11 | MSVC 2019 | Bazel 6.1.0 |
tensorflow-2.12.0 | 3.8-3.11 | MSVC 2019 | Bazel 5.3.0 |
tensorflow-2.11.0 | 3.7-3.10 | MSVC 2019 | Bazel 5.3.0 |
tensorflow-2.10.0 | 3.7-3.10 | MSVC 2019 | Bazel 5.1.1 |
tensorflow-2.9.0 | 3.7-3.10 | MSVC 2019 | Bazel 5.0.0 |
tensorflow-2.8.0 | 3.7-3.10 | MSVC 2019 | Bazel 4.2.1 |
tensorflow-2.7.0 | 3.7-3.9 | MSVC 2019 | Bazel 3.7.2 |
tensorflow-2.6.0 | 3.6-3.9 | MSVC 2019 | Bazel 3.7.2 |
tensorflow-2.5.0 | 3.6-3.9 | MSVC 2019 | Bazel 3.7.2 |
tensorflow-2.4.0 | 3.6-3.8 | MSVC 2019 | Bazel 3.1.0 |
tensorflow-2.3.0 | 3.5-3.8 | MSVC 2019 | Bazel 3.1.0 |
tensorflow-2.2.0 | 3.5-3.8 | MSVC 2019 | Bazel 2.0.0 |
tensorflow-2.1.0 | 3.5-3.7 | MSVC 2019 | Bazel 0.27.1-0.29.1 |
tensorflow-2.0.0 | 3.5-3.7 | MSVC 2017 | Bazel 0.26.1 |
tensorflow-1.15.0 | 3.5-3.7 | MSVC 2017 | Bazel 0.26.1 |
tensorflow-1.14.0 | 3.5-3.7 | MSVC 2017 | Bazel 0.24.1-0.25.2 |
tensorflow-1.13.0 | 3.5-3.7 | MSVC 2015 update 3 | Bazel 0.19.0-0.21.0 |
tensorflow-1.12.0 | 3.5-3.6 | MSVC 2015 update 3 | Bazel 0.15.0 |
tensorflow-1.11.0 | 3.5-3.6 | MSVC 2015 update 3 | Bazel 0.15.0 |
tensorflow-1.10.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 |
tensorflow-1.9.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 |
tensorflow-1.8.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 |
tensorflow-1.7.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 |
tensorflow-1.6.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 |
tensorflow-1.5.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 |
tensorflow-1.4.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 |
tensorflow-1.3.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 |
tensorflow-1.2.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 |
tensorflow-1.1.0 | 3.5 | MSVC 2015 update 3 | Cmake v3.6.3 |
tensorflow-1.0.0 | 3.5 | MSVC 2015 update 3 | Cmake v3.6.3 |
GPU
版本 | Python 版本 | 編譯器 | 建構工具 | cuDNN | CUDA |
---|---|---|---|---|---|
tensorflow_gpu-2.10.0 | 3.7-3.10 | MSVC 2019 | Bazel 5.1.1 | 8.1 | 11.2 |
tensorflow_gpu-2.9.0 | 3.7-3.10 | MSVC 2019 | Bazel 5.0.0 | 8.1 | 11.2 |
tensorflow_gpu-2.8.0 | 3.7-3.10 | MSVC 2019 | Bazel 4.2.1 | 8.1 | 11.2 |
tensorflow_gpu-2.7.0 | 3.7-3.9 | MSVC 2019 | Bazel 3.7.2 | 8.1 | 11.2 |
tensorflow_gpu-2.6.0 | 3.6-3.9 | MSVC 2019 | Bazel 3.7.2 | 8.1 | 11.2 |
tensorflow_gpu-2.5.0 | 3.6-3.9 | MSVC 2019 | Bazel 3.7.2 | 8.1 | 11.2 |
tensorflow_gpu-2.4.0 | 3.6-3.8 | MSVC 2019 | Bazel 3.1.0 | 8.0 | 11.0 |
tensorflow_gpu-2.3.0 | 3.5-3.8 | MSVC 2019 | Bazel 3.1.0 | 7.6 | 10.1 |
tensorflow_gpu-2.2.0 | 3.5-3.8 | MSVC 2019 | Bazel 2.0.0 | 7.6 | 10.1 |
tensorflow_gpu-2.1.0 | 3.5-3.7 | MSVC 2019 | Bazel 0.27.1-0.29.1 | 7.6 | 10.1 |
tensorflow_gpu-2.0.0 | 3.5-3.7 | MSVC 2017 | Bazel 0.26.1 | 7.4 | 10 |
tensorflow_gpu-1.15.0 | 3.5-3.7 | MSVC 2017 | Bazel 0.26.1 | 7.4 | 10 |
tensorflow_gpu-1.14.0 | 3.5-3.7 | MSVC 2017 | Bazel 0.24.1-0.25.2 | 7.4 | 10 |
tensorflow_gpu-1.13.0 | 3.5-3.7 | MSVC 2015 update 3 | Bazel 0.19.0-0.21.0 | 7.4 | 10 |
tensorflow_gpu-1.12.0 | 3.5-3.6 | MSVC 2015 update 3 | Bazel 0.15.0 | 7.2 | 9.0 |
tensorflow_gpu-1.11.0 | 3.5-3.6 | MSVC 2015 update 3 | Bazel 0.15.0 | 7 | 9 |
tensorflow_gpu-1.10.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 | 7 | 9 |
tensorflow_gpu-1.9.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 | 7 | 9 |
tensorflow_gpu-1.8.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 | 7 | 9 |
tensorflow_gpu-1.7.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 | 7 | 9 |
tensorflow_gpu-1.6.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 | 7 | 9 |
tensorflow_gpu-1.5.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 | 7 | 9 |
tensorflow_gpu-1.4.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 | 6 | 8 |
tensorflow_gpu-1.3.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 | 6 | 8 |
tensorflow_gpu-1.2.0 | 3.5-3.6 | MSVC 2015 update 3 | Cmake v3.6.3 | 5.1 | 8 |
tensorflow_gpu-1.1.0 | 3.5 | MSVC 2015 update 3 | Cmake v3.6.3 | 5.1 | 8 |
tensorflow_gpu-1.0.0 | 3.5 | MSVC 2015 update 3 | Cmake v3.6.3 | 5.1 | 8 |