运行 Skylark 宏中的 load()
Running load() within Skylark macro
如果您的项目依赖于 TensorFlow,建议您添加...
load("//tensorflow:workspace.bzl", "tf_workspace")
tf_workspace()
...到您的 WORKSPACE
文件,该文件将加载 TF 的所有依赖项。
但是,如果您查看 TensorFlow 的 workspace.bzl
文件...
https://github.com/tensorflow/tensorflow/blob/master/tensorflow/workspace.bzl
您可以看到它取决于 @io_bazel_rules_closure
中的规则。这意味着您还必须在 WORKSPACE
文件中定义此 @io_bazel_rules_closure
规则并使其与 TensorFlow 保持同步,即使您在项目的其他任何地方都不需要它。
有没有办法将 load()
命令 somehow/somewhere 添加到 tf_workspace()
宏中?
谢谢!
不行,没办法在tf_workspace()
中添加这条规则,因为在https://github.com/tensorflow/tensorflow/blob/master/tensorflow/workspace.bzl中定义的skylark规则tf_workspace()
需要加载@io_bazel_rules_closure
.
基本上有两种方法可以做到这一点
要么是tensorflow项目重新定义了规则,只使用内部规则,要么是原生规则。
或 bazel 能够加载依赖项的工作空间(我假设也加载所有传递依赖项)。这是一个难题,在 #1943.
中进行了跟踪
如果您的项目依赖于 TensorFlow,建议您添加...
load("//tensorflow:workspace.bzl", "tf_workspace")
tf_workspace()
...到您的 WORKSPACE
文件,该文件将加载 TF 的所有依赖项。
但是,如果您查看 TensorFlow 的 workspace.bzl
文件...
https://github.com/tensorflow/tensorflow/blob/master/tensorflow/workspace.bzl
您可以看到它取决于 @io_bazel_rules_closure
中的规则。这意味着您还必须在 WORKSPACE
文件中定义此 @io_bazel_rules_closure
规则并使其与 TensorFlow 保持同步,即使您在项目的其他任何地方都不需要它。
有没有办法将 load()
命令 somehow/somewhere 添加到 tf_workspace()
宏中?
谢谢!
不行,没办法在tf_workspace()
中添加这条规则,因为在https://github.com/tensorflow/tensorflow/blob/master/tensorflow/workspace.bzl中定义的skylark规则tf_workspace()
需要加载@io_bazel_rules_closure
.
基本上有两种方法可以做到这一点
要么是tensorflow项目重新定义了规则,只使用内部规则,要么是原生规则。
或 bazel 能够加载依赖项的工作空间(我假设也加载所有传递依赖项)。这是一个难题,在 #1943.
中进行了跟踪