Tensorflow 在Skylark宏中运行load()

Tensorflow 在Skylark宏中运行load(),tensorflow,bazel,Tensorflow,Bazel,如果您的项目依赖于TensorFlow,建议您添加 加载//tensorflow:workspace.bzl,tf_workspace 工作区 …加载到您的工作区文件,该文件将加载TF的所有依赖项 但是,如果您查看TensorFlow的workspace.bzl文件。。。 您可以看到它取决于@io_bazel_rules_closure中的规则。这意味着您还必须在工作区文件中定义这个@io_bazel_rules_闭包规则,并使其与TensorFlow保持同步,即使您在项目的其他任何地方都不需

如果您的项目依赖于TensorFlow,建议您添加

加载//tensorflow:workspace.bzl,tf_workspace 工作区

…加载到您的工作区文件,该文件将加载TF的所有依赖项

但是,如果您查看TensorFlow的workspace.bzl文件。。。

您可以看到它取决于@io_bazel_rules_closure中的规则。这意味着您还必须在工作区文件中定义这个@io_bazel_rules_闭包规则,并使其与TensorFlow保持同步,即使您在项目的其他任何地方都不需要它

是否有办法将load命令以某种方式/某种方式添加到tf_workspace宏中


谢谢

否,无法在tf_工作区中添加此规则,因为中定义的skylark rule tf_工作区需要加载@io_bazel_rules_闭包

基本上有两种方法可以实现这一点

tensorflow项目可以重新定义其规则,以便只使用内部规则或本机规则

或者bazel能够加载依赖项的工作区,我假设也加载所有可传递的依赖项。这是一个很难解决的问题,并在中进行了跟踪


你确定io_bazel_规则_关闭必须保持同步吗?更糟糕的是,任何依赖TF的Bazel项目都需要将io_Bazel_规则_闭包添加到自己的工作区文件中,即使他们的项目不使用它。这似乎让我困惑,这并不能回答我的问题。我想在tf_workspace宏中加载io_bazel_rules_闭包。我知道tf_工作区需要io_bazel_规则_关闭。对于依赖TF的项目来说,只需要将TF_工作区添加到他们的工作区中,这将是非常好的。他们还必须在他们的工作区文件中包含io_bazel_规则_闭包规则,即使他们自己的项目不需要它,我同意并理解。编辑我的答案后,此评论框太小。