LoginSignup
0
0

More than 3 years have passed since last update.

ERROR: Analysis of target '//mediapipe/examples/desktop/hello_world:hello_world' failed; build aborted: Either the path attribute of android_sdk_repository or the ANDROID_HOME environment variable must be set.というエラーについて

Last updated at Posted at 2020-09-22

はじめに

mediapipeのhandtrackingを試そうとしていたところ、
以前は上手く行ったのに、自分の環境をイジったせいなのか、
バージョンが変わったせいなのか分からないけど、
こんな感じのエラーが出てきて、全然進まなくなっていた。
(2020/09/22現在)

ERROR: Analysis of target '//mediapipe/examples/desktop/hello_world:hello_world' 
failed; build aborted: Either the path attribute of android_sdk_repository or the ANDROID_HOME environment variable must be set.
INFO: Elapsed time: 7.720s
INFO: 0 processes.
FAILED: Build did NOT complete successfully (8 packages loaded, 11 targets con\
FAILED: Build did NOT complete successfully (8 packages loaded, 11 targets con\
figured)
    currently loading: @rules_foreign_cc//tools/build_defs/shell_toolchain/too\
lchains ... (2 packages)
    Fetching @local_config_cc_toolchains; Restarting.
    Fetching @local_execution_config_python; fetching
    Fetching @commands_overloads; Restarting.

これについて色々試したことを残しておく。

目次

  1. 開発環境
  2. pipenvで試したけど失敗(使ってない人は飛ばして良い)
  3. python -m venv venvで作ったらhandtrackingできた
  4. ついにhandtracking
  5. 参考文献

開発環境

MacBook Air 2017
macOS Catalina 10.15.16
標準: zsh(bashではない)。

Windows、Ubuntuのことは分かりません。

pipenvで試したけど失敗(使ってない人は飛ばして良い)

まずは仮想環境の準備。
今回作業するのはhandというディレクトリなので、そこに移動。

% cd hand

このディレクトリが空であることを確認して、以下を実行。

% pipenv install

handディレクトリ内に作った仮想環境を起動。

% pipenv shell

%の左側に(hand)が表示され、仮想環境の起動に成功。

(hand) % 

基本的には、以下の
Installing on macOS
と同じ手順で実行した。

ところが、
手順5. Make sure that Python 3 and the Python “six” library are installed.
が実行できなかった。

(hand) % pip3 install --user six 

これを実行して出てきたエラーは以下の通り。

(hand) % ERROR: Can not perform a '--user' install. User site-packages are not visible in this virtualenv.

調べてみると、
pyenvで制作した仮想環境でpip --userがエラーを返す時の対処法
を見つけ、同じような手順でファイルを編集してもエラーは解消されなかった。

そのため、pipenvの仮想環境は一旦諦めることに...。

python -m venv venvで作ったらhandtrackingできた

さっき作ったディレクトリは削除して、新たにhandディレクトリを作成し、移動。

% cd hand

ここにvenvという仮想環境を作成。

% python -m venv venv

起動には以下を実行。

% . venv/bin/activate

handtrackingの導入手順はさっきの
Installing on macOS
を参照。

sixのインストールはできた。

順調に手順6.Run the Hello World desktop example.
を実行していく。

(venv) % export GLOG_logtostderr=1

ここまでは大丈夫。

問題は次。

(venv) % bazel run --define MEDIAPIPE_DISABLE_GPU=1 \
    mediapipe/examples/desktop/hello_world:hello_world

新たなエラーは以下の通り。

(venv) % ERROR: Analysis of target '//mediapipe/examples/desktop/hello_world:hello_world' failed; build aborted: Either the path attribute of android_sdk_repository or the ANDROID_HOME environment variable must be set.
INFO: Elapsed time: 0.285s
INFO: 0 processes.
FAILED: Build did NOT complete successfully (0 packages loaded, 0 targets conf\
FAILED: Build did NOT complete successfully (0 packages loaded, 0 targets conf\
igured)
    currently loading: @rules_foreign_cc//tools/build_defs/shell_toolchain/too\
lchains
    Fetching @local_config_cc_toolchains; fetching

ハマりポイントはこいつでした。

(venv) % ERROR: Analysis of target '//mediapipe/examples/desktop/hello_world:hello_world' failed; build aborted: Either the path attribute of android_sdk_repository or the ANDROID_HOME environment variable must be set.

よく分からないけど、
ANDROID_HOME environment variable must be set.
が怪しかったのでググってみると、
MediaPipeのビルドエラー
が見つかり、同じように試したが、
エラーのまま。

同じページ内に、
参考ページがあったので、見てみました。
Google MediaPipeのサンプルアプリをビルドしてAndroidにインストールする手順

どうやら、

プロジェクトルートにあるWORKSPACEファイルにandroid_ndk_repositoryとandroid_sdk_repositoryがすでにあるので、そこにpath =の行を追記します。

path以下を変更すれば良いみたいなので、

# You may run setup_android.sh to install Android SDK and NDK.
android_ndk_repository(
    name = "androidndk",
    path = "/Users/keita/Library/Android/sdk/ndk-bundle",
)
android_sdk_repository(
    name = "androidsdk",
    path = "/Users/keita/Library/Android/sdk",
)

DOWNLOAD ANDROID STUDIO
から、アンドロイドスタジオをダウンロードし(使わないのに...)、

(venv) % path = "/Users/自分のpath/Library/Android/sdk/ndk-bundle"

(venv) % path = "/Users/自分のpath/Library/Android/sdk/"

を変更し、

もう一度以下を実行する。

(venv) % export GLOG_logtostderr=1
% bazel run --define MEDIAPIPE_DISABLE_GPU=1 \
    mediapipe/examples/desktop/hello_world:hello_world

今度はうまくいき、Hello World!が10回表示された。
これで、handtrackingの準備完了。

補足:
途中で、numpyがないと怒られるかもしれないが、pipでインストールしよう。

ついにhandtracking

上記の環境設定ができていればあとは簡単。
順番に実行してくだけ(初回の待ち時間30分くらい...)。

(venv) % bazel-bin/mediapipe/examples/desktop/hand_tracking/hand_tracking_cpu \
    --calculator_graph_config_file=mediapipe/graphs/hand_tracking/hand_tracking_desktop_live.pbtxt

(venv) % export GLOG_logtostderr=1

(venv) % bazel-bin/mediapipe/examples/desktop/hand_tracking/hand_tracking_cpu \
    --calculator_graph_config_file=mediapipe/graphs/hand_tracking/hand_tracking_desktop_live.pbtxt

これでラートと手の接触を可視化したい...。

参考文献

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0