首页 文章

Bazel没有找到C示例代码的tensorflow包

提问于
浏览
1

我尝试使this example工作,但每次我尝试用bazel构建程序时,我收到此错误消息:

bazel build //code:label_image 
ERROR: /home/jonas/tensorflow/code/BUILD:12:1: no such package 'tensorflow': BUILD file not found on package path and referenced by '//code:label_image'.
ERROR: /home/jonas/tensorflow/code/BUILD:12:1: no such package 'tensorflow': BUILD file not found on package path and referenced by '//code:label_image'.
ERROR: /home/jonas/tensorflow/code/BUILD:12:1: no such package 'tensorflow': BUILD file not found on package path and referenced by '//code:label_image'.
ERROR: /home/jonas/tensorflow/code/BUILD:12:1: no such package 'tensorflow': BUILD file not found on package path and referenced by '//code:label_image'.
ERROR: /home/jonas/tensorflow/code/BUILD:12:1: no such package 'tensorflow': BUILD file not found on package path and referenced by '//code:label_image'.
ERROR: Analysis of target '//code:label_image' failed; build aborted.
INFO: Elapsed time: 1.261s

我在github中保存了名为 code 的确切源代码 . 我通过pip: pip3 install --upgrade tensorflow 在(活动)虚拟环境中安装了 tensorflow . 我使用arch linux .

为什么bazel找不到合适的包装?我对bazel / tensorflow很新 . 这些包保存在哪里?我是否必须在某处明确指定它们?

1 回答

  • 3

    通常,从使用Bazel的项目中提取子文件夹并单独构建它不起作用 .

    如果查看 label_image 文件夹的BUILD文件,您将看到C二进制文件的这个定义:

    cc_binary(
        name = "label_image",
        srcs = [
            "main.cc",
        ],
        linkopts = select({
            "//tensorflow:android": [
                "-pie",
                "-landroid",
                "-ljnigraphics",
                "-llog",
                "-lm",
                "-z defs",
                "-s",
                "-Wl,--exclude-libs,ALL",
            ],
            "//conditions:default": ["-lm"],
        }),
        deps = select({
            "//tensorflow:android": [
                # cc:cc_ops is used to include image ops (for label_image)
                # Jpg, gif, and png related code won't be included
                "//tensorflow/cc:cc_ops",
                "//tensorflow/core:android_tensorflow_lib",
                # cc:android_tensorflow_image_op is for including jpeg/gif/png
                # decoder to enable real-image evaluation on Android
                "//tensorflow/core/kernels:android_tensorflow_image_op",
            ],
            "//conditions:default": [
                "//tensorflow/cc:cc_ops",
                "//tensorflow/core:core_cpu",
                "//tensorflow/core:framework",
                "//tensorflow/core:framework_internal",
                "//tensorflow/core:lib",
                "//tensorflow/core:protos_all_cc",
                "//tensorflow/core:tensorflow",
            ],
        }),
    )
    

    此规则告诉Bazel需要构建 label_image 二进制文件 . 值得注意的是,它具有依赖关系( deps )和链接选项( linkopts ),它们指向tensorflow工作空间的根( //tensorflow ,由 WORKSPACE 文件定义),这在提取的子文件夹中是缺失的 . 这就是Bazel抱怨无法找到包 tensorflow 的原因 .

    构建 label_image 二进制文件的最简单方法是在tensorflow项目中构建它,因为路径已经设置好了 .

相关问题