2017-09-21 8 views
1

ためtensorflowパッケージを見つけることができません:私は、正確なソースコードを保存しBazel私は<a href="https://github.com/tensorflow/tensorflow/tree/master/tensorflow/examples/label_image" rel="nofollow noreferrer">this example</a>仕事をしようが、毎回私は、このエラーメッセージを取得bazelとプログラム構築しようとC++のコード例

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というディレクトリに移動します。私はtensorflowをpip(pip3 install --upgrade tensorflow)を介して(アクティブな)仮想環境にインストールしました。私はarch linuxを使っています。

なぜ、bazelが適切なパッケージを見つけられないのですか?私は、bazel/tensorflowにはかなり新しいです。これらのパッケージはどこに保存されていますか?明示的にどこかでそれらを指定しなければなりませんか?

答えて

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", 
     ], 
    }), 
) 

このルールはlabel_imageバイナリをビルドするために必要なものをBazelを伝えます。特に、テンソルフローワークスペース(//tensorflowWORKSPACEファイルで定義)のルートを指している依存関係(deps)とリンクオプション(linkopts)があり、抽出されたサブフォルダには存在しません。これは、Bazelがパッケージtensorflowを見つけることができないと訴えている理由です。

label_imageバイナリを作成する最も簡単な方法は、パスがすでに設定されているため、テンソルフロープロジェクトからビルドすることです。

+0

ご覧いただきありがとうございます。完全なプロジェクトをgithubからダウンロードしてそこにサンプルビルドを実行すれば十分ですか、それとも動作させるには何かを事前にビルドする必要がありますか? – Jonas

+0

はい、READMEのTensorflow固有の追加手順に従ってモデル定義をダウンロードしてください。 – Jin

関連する問題

 関連する問題