Windows "Could not find bazel-bin" 从源代码构建 Tensorflow 2.0 失败

Build of Tensorflow 2.0 from source fails on Windows "Could not find bazel-bin"

我正在尝试在 Windows 上构建 Tensorflow 2.0 以利用 AVX2 支持,因为 "pip install tensorflow" 的默认包不包括 AVX2 支持。我在这里遵循指南: https://www.tensorflow.org/install/source_windows

在多次构建失败后,我将环境变量设置为Visual Studio 2017后终于构建成功。最后的命令,运行 from c:\tmp\tensorflow (which花了 9 个小时才完成)是:

bazel build --config=opt //tensorflow/tools/pip_package:build_pip_package --define=no_tensorflow_py_deps=true

说明“Build the package”中的下一步是 运行

bazel-bin\tensorflow\tools\pip_package\build_pip_package C:/tmp/tensorflow_pkg

如果我直接这样做(从 c:\tmp\tensorflow),我会得到错误 "The system cannot find the path specified."。

然后我查看了构建的最终消息:

C:/users/john.doe/_bazel_john.doe/3ttaaxce/execroot/org_tensorflow/bazel-out/x64_windows-opt/bin/tensorflow/tools/pip_package/build_pip_package.exe

INFO: Elapsed time: 32810.307s, Critical Path: 25586.71s

INFO: 8885 processes: 8885 local.

INFO: Build completed successfully, 11312 total actions

从这里看来 build_pip_package.exe 在不同的位置,所以我 运行

C:/users/john.doe/_bazel_john.doe/3ttaaxce/execroot/org_tensorflow/bazel-out/x64_windows-opt/bin/tensorflow/tools/pip_package/build_pip_package C:/tmp/tensorflow_pkg

但这导致了错误:

Fri Oct 11 08:30:40 PDT 2019 : === Preparing sources in dir: /tmp/tmp.B207TraE5w

Could not find bazel-bin. Did you run from the root of the build tree?

有人知道哪里出了问题吗?

Bazel 从 bazel-bin 创建一个 link 到输出目录。此行为由 --symlink_prefix 选项控制。尝试使用 运行 bazel 和 --announce_rc 并查看是否在某处设置了该选项 - 它可能正在创建一个具有不同名称的 link,或者根本不创建一个。

此外,tensorflow 中的任何程序假设输出将在 bazel-bin 中都是错误的。对于节点项目,我们建议 --symlink_prefix=dist/ 以便输出进入项目中的 dist/bin

我通过从源代码重新编译到新目录 c:\tmp2\tensorflow 解决了这个问题。这次 build_pip_package.exe 在正确的位置,我能够成功构建 pip 包并安装。