在 Windows 上从源代码构建

从源代码构建 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++ 构建工具 2022

安装 Visual C++ 构建工具 2022。它包含在 Visual Studio Community 2022 中,但可以单独安装

  1. 转到 Visual Studio 下载
  2. 选择 Visual Studio 或其他工具、框架和可再发行组件的工具
  3. 下载并安装
    • 适用于 Visual Studio 2022 的构建工具
    • 适用于 Visual Studio 2022 的 Microsoft Visual C++ 可再发行组件

安装 LLVM

  1. 转到 LLVM 下载
  2. 下载并安装与 Windows 兼容的 LLVM 到 C:/Program Files/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#59943tensorflow:issue#9436tensorflow: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 编译器的 TensorFlow

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 缓存的命令,以解决由于无效或过时的缓存数据导致的错误,bazel clean 带有 --expunge 标志会永久删除文件

bazel clean 
bazel clean --expunge  

Bazel 构建选项

构建时使用此选项可避免包创建问题:tensorflow:issue#22390

--define=no_tensorflow_py_deps=true

有关 构建选项,请参阅 Bazel 命令行参考

从源代码构建 TensorFlow 会使用大量 RAM。如果您的系统内存受限,请使用以下命令限制 Bazel 的 RAM 使用量:--local_ram_resources=2048

如果使用 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 separator
export 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.13.9-3.12CLANG 17.0.6Bazel 6.5.0
tensorflow-2.15.03.9-3.11MSVC 2019Bazel 6.1.0
tensorflow-2.14.03.9-3.11MSVC 2019Bazel 6.1.0
tensorflow-2.12.03.8-3.11MSVC 2019Bazel 5.3.0
tensorflow-2.11.03.7-3.10MSVC 2019Bazel 5.3.0
tensorflow-2.10.03.7-3.10MSVC 2019Bazel 5.1.1
tensorflow-2.9.03.7-3.10MSVC 2019Bazel 5.0.0
tensorflow-2.8.03.7-3.10MSVC 2019Bazel 4.2.1
tensorflow-2.7.03.7-3.9MSVC 2019Bazel 3.7.2
tensorflow-2.6.03.6-3.9MSVC 2019Bazel 3.7.2
tensorflow-2.5.03.6-3.9MSVC 2019Bazel 3.7.2
tensorflow-2.4.03.6-3.8MSVC 2019Bazel 3.1.0
tensorflow-2.3.03.5-3.8MSVC 2019Bazel 3.1.0
tensorflow-2.2.03.5-3.8MSVC 2019Bazel 2.0.0
tensorflow-2.1.03.5-3.7MSVC 2019Bazel 0.27.1-0.29.1
tensorflow-2.0.03.5-3.7MSVC 2017Bazel 0.26.1
tensorflow-1.15.03.5-3.7MSVC 2017Bazel 0.26.1
tensorflow-1.14.03.5-3.7MSVC 2017Bazel 0.24.1-0.25.2
tensorflow-1.13.03.5-3.7MSVC 2015 更新 3Bazel 0.19.0-0.21.0
tensorflow-1.12.03.5-3.6MSVC 2015 更新 3Bazel 0.15.0
tensorflow-1.11.03.5-3.6MSVC 2015 更新 3Bazel 0.15.0
tensorflow-1.10.03.5-3.6MSVC 2015 更新 3Cmake v3.6.3
tensorflow-1.9.03.5-3.6MSVC 2015 更新 3Cmake v3.6.3
tensorflow-1.8.03.5-3.6MSVC 2015 更新 3Cmake v3.6.3
tensorflow-1.7.03.5-3.6MSVC 2015 更新 3Cmake v3.6.3
tensorflow-1.6.03.5-3.6MSVC 2015 更新 3Cmake v3.6.3
tensorflow-1.5.03.5-3.6MSVC 2015 更新 3Cmake v3.6.3
tensorflow-1.4.03.5-3.6MSVC 2015 更新 3Cmake v3.6.3
tensorflow-1.3.03.5-3.6MSVC 2015 更新 3Cmake v3.6.3
tensorflow-1.2.03.5-3.6MSVC 2015 更新 3Cmake v3.6.3
tensorflow-1.1.03.5MSVC 2015 更新 3Cmake v3.6.3
tensorflow-1.0.03.5MSVC 2015 更新 3Cmake v3.6.3

GPU

版本Python 版本编译器构建工具cuDNNCUDA
tensorflow_gpu-2.10.03.7-3.10MSVC 2019Bazel 5.1.18.111.2
tensorflow_gpu-2.9.03.7-3.10MSVC 2019Bazel 5.0.08.111.2
tensorflow_gpu-2.8.03.7-3.10MSVC 2019Bazel 4.2.18.111.2
tensorflow_gpu-2.7.03.7-3.9MSVC 2019Bazel 3.7.28.111.2
tensorflow_gpu-2.6.03.6-3.9MSVC 2019Bazel 3.7.28.111.2
tensorflow_gpu-2.5.03.6-3.9MSVC 2019Bazel 3.7.28.111.2
tensorflow_gpu-2.4.03.6-3.8MSVC 2019Bazel 3.1.08.011.0
tensorflow_gpu-2.3.03.5-3.8MSVC 2019Bazel 3.1.07.610.1
tensorflow_gpu-2.2.03.5-3.8MSVC 2019Bazel 2.0.07.610.1
tensorflow_gpu-2.1.03.5-3.7MSVC 2019Bazel 0.27.1-0.29.17.610.1
tensorflow_gpu-2.0.03.5-3.7MSVC 2017Bazel 0.26.17.410
tensorflow_gpu-1.15.03.5-3.7MSVC 2017Bazel 0.26.17.410
tensorflow_gpu-1.14.03.5-3.7MSVC 2017Bazel 0.24.1-0.25.27.410
tensorflow_gpu-1.13.03.5-3.7MSVC 2015 更新 3Bazel 0.19.0-0.21.07.410
tensorflow_gpu-1.12.03.5-3.6MSVC 2015 更新 3Bazel 0.15.07.29.0
tensorflow_gpu-1.11.03.5-3.6MSVC 2015 更新 3Bazel 0.15.079
tensorflow_gpu-1.10.03.5-3.6MSVC 2015 更新 3Cmake v3.6.379
tensorflow_gpu-1.9.03.5-3.6MSVC 2015 更新 3Cmake v3.6.379
tensorflow_gpu-1.8.03.5-3.6MSVC 2015 更新 3Cmake v3.6.379
tensorflow_gpu-1.7.03.5-3.6MSVC 2015 更新 3Cmake v3.6.379
tensorflow_gpu-1.6.03.5-3.6MSVC 2015 更新 3Cmake v3.6.379
tensorflow_gpu-1.5.03.5-3.6MSVC 2015 更新 3Cmake v3.6.379
tensorflow_gpu-1.4.03.5-3.6MSVC 2015 更新 3Cmake v3.6.368
tensorflow_gpu-1.3.03.5-3.6MSVC 2015 更新 3Cmake v3.6.368
tensorflow_gpu-1.2.03.5-3.6MSVC 2015 更新 3Cmake v3.6.35.18
tensorflow_gpu-1.1.03.5MSVC 2015 更新 3Cmake v3.6.35.18
tensorflow_gpu-1.0.03.5MSVC 2015 更新 3Cmake v3.6.35.18