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 包并安装。
我正在尝试在 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 包并安装。