在Skylark宏中运行load()

时间:2018-09-24 15:47:09

标签: tensorflow bazel

如果您的项目依赖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中的规则。这意味着您还必须在@io_bazel_rules_closure文件中定义此WORKSPACE规则,并使其与TensorFlow保持同步,即使您在项目中的其他任何地方都不需要它。

是否可以通过某种方式/某处将load()命令添加到tf_workspace()宏中?

谢谢!

1 个答案:

答案 0 :(得分:1)

否,由于https://github.com/tensorflow/tensorflow/blob/master/tensorflow/workspace.bzl中定义的云雀规则tf_workspace()需要加载tf_workspace(),因此无法在@io_bazel_rules_closure中添加此规则。

基本上有两种方法可以使这项工作

  • tensorflow项目会重新定义其规则,使其仅使用内部规则或本机规则。

  • 或bazel能够加载依赖项的工作空间(并且我假设也加载所有传递依赖项)。这是一个难题,#1943中对此进行了跟踪。