M1에 iOS mediapipe 빌드하기(근데 이제 PEP 517 에러를 곁들인)

Jee.e (황지희)·2022년 10월 18일
1
post-custom-banner

❗️ Xcode가 설치되어 있다는 조건 하에 진행됩니다.


1. bazelisk 설치

Google의 iOS mediapipe 빌드 관련 문서에서
최신 버전을 얻기 위해 Homebrew 사용을 권장하고 있어, Homebrew를 이용해 설치했습니다.

brew install bazelisk

✔️ Bazellisk ?
Go로 작성 된 Bazel(Make, Maven, Gradle과 같은 오픈소스 빌드 및 테스트 툴) wrapper.


2. Python 3.7을 기본 버전으로 설정하고 Python "six" 라이브러리를 설치

TensorFlow에 필요합니다.

✔️ TensorFlow ?
구글이 만든 파이썬과 C++ 기반의, 기계 학습 및 인공 지능을 위한 무료 오픈 소스 소프트웨어 라이브러리입니다.
다양한 작업에 사용 가능하며, 심층 신경망 훈련 및 추론에 특화되어 있습니다.

pip3 install --user six

3. MediaPipe git clone

원하는 위치에 파일 생성 후, MediaPipe 리포지토리를 복제합니다.

git clone https://github.com/google/mediapipe.git

4. Bundle ID Prefix를 생성

  • 모든 iOS 앱에는 Bundle ID가 있어야 합니다.
    (Bundle ID로 앱을 디바이스에 설치하기 위한 Provisioning Profiles 필요)
  • 다른 MediaPipe 사용자 간의 충돌을 방지하기 위해, 고유한 Bundle ID prefix를 구성해야 합니다.

Custom provisioning도 가능하지만, 저는 명령어를 사용해 생성했습니다만!
문서에 나와 있는 명령어 입력시 파일을 찾을 수 없다는 오류가 발생했습니다.
경로 설정을 제대로 해주니, 정상 생성!

// Bundle ID Prefix 생성 명령어
python3 mediapipe/examples/ios/link_local_profiles.py

위 명령어를 작성하고 나면, bundle_id.bzl 파일에서 아래와 같이 확인 가능!


5. Xcode 프로젝트 생성

Bazel 빌드 구성에서 Xcode 프로젝트를 생성하기 위해 Tulsi 라는 도구를 사용 합니다.

아래 명령어를 순서대로 실행해줍니다.

# cd out of the mediapipe directory, then:
git clone https://github.com/bazelbuild/tulsi.git
cd tulsi
# remove Xcode version from Tulsi's .bazelrc (see http://github.com/bazelbuild/tulsi#building-and-installing):
sed -i .orig '/xcode_version/d' .bazelrc

아래와 같이 뜨면, 설치 완료!


6. 파일 실행

  • 앞서 3번에서 클론받았던 디렉토리에 가면, tulsi 라는 폴더가 생성되어있습니다.
  • 아래와 같이 mediapipe/Mediapipe.tulsiproj 이라는 파일을 Tulsi를 통해 열어줍니다.

해당 경로로 이동 후, 아래 명령어를 통해 Tulsi를 열어줍니다.

sh build_and_run.sh
  1. 위 명령어를 입력하면, 아래와 같이 Tulsi가 열립니다.

  2. open existing project -> mediapipe/Mediapipe.tulsiproj 선택 후, 우측 하단 Bazel 버튼을 누릅니다.

  3. 아래 이미지와 같이 bazel 을 선택 후, Select 버튼을 눌러줍니다.

  4. Configs 탭으로 이동 후, 우측 하단의 Generate 를 눌러줍니다.
    이제 생성 될 Xcode 파일을 어디에 저장할 지, 경로를 선택해주면 끝!

이어야 하는데..^^ 오류가 발생했읍니다.

numpy 가 없다고 다운 받으라는 메세지입니다.

✔️ Numpy ? (넘파이)
TensorFlow 에 사용하기 위해 Python과 Python six 를 사용하지 않습니까?
Numpy는 다차원 배열을 쉽게 처리하고, 효율적으로 사용할 수 있도록 도와주는 Python 패키지 입니다.
수치 계산을 보다 용이하게 할 수 있습니다.

그래서 간단히 명령어 pip3 install numpy 를 통해 넘파이를 설치해주었습니다.
(Python3가 아닌 경우, pip install numpy)

이제 됐다~~~ 싶었으나, 오류 발생222 😶

위와 같이 무섭도록 빨간 코드가 떴지만, 마지막 두 문장만 봤습니다.

numpy 빌드에 실패했다!
PEP 517 오류가 발생했다.

그냥 아래 두 명령어를 차례대로 실행시켜주면 됩니다.

pip3 install --upgrade pip setuptools wheel
pip3 install opencv-python

이제 6번의 시작으로 돌아가, tulsi의 오픈부터 다시 반복하면 ~!~!
이렇게 정상 실행 창이 뜨고, 아래와 같이 Xcode 파일이 자동으로 열립니다.

이제 앱 빌드가 안된다...... ^^
-> Provisioning Profile 때문이었고, 무료로 Provisioning 하는 방법을 찾아 해결했으나..
중간에도 여러 에러들이 존재해, 결과적으로 해결됐는지를 파악하지 못했읍니다.
어서 찾아 Free Provisioning을 포스팅하겠읍니다..

profile
교훈없는 경험은 없다고 생각하는 2년차 iOS 개발자입니다.
post-custom-banner

1개의 댓글

comment-user-thumbnail
2023년 1월 16일

안녕하세요 마지막에 xcode 빌드에서 저도 문제를 겪었는데
혹시 Provisioning Profile 문제인지는 어떻게 아셨고
무료로 Provisioning 하는 방법을 찾아 해결하셨다고 했는데 어떻게하셨는지 질문드려도 될까요?

답글 달기