Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

SDK同梱ドキュメント:PythonModuleInstallManual

Table of Contents

概要

Pythonスクリプトを使用するAdamAppの開発は、以下手順にて実施します。Python版のAdamAppで外部ライブラリを使用する場合は、Pythonモジュールのコンパイルが必要です。

  1. 開発環境へのDockerインストール

  2. Docker実行イメージの作成

  3. 使用するPythonモジュールのコンパイル/インストール用スクリプト作成

  4. Docker上でPythonモジュールのコンパイル/インストール

  5. 作成されたPythonモジュールの各ファイルをAdamAppの特定ディレクトリに配置

  6. Pythonスクリプト作成、パッケージ作成

本ページでは、1-5までの手順を記載しています。

なお、Pythonモジュールの例として、以下2種類を使用します。本チュートリアルでは、Python用外部ライブラリをビルドするための環境構築~サンプルモジュールのコンパイルまでの手順を解説します。

サンプルモジュール
  • NumPy 1.14.9

  • OpenCV 3.4.7

目次

Table of Contents
minLevel1
maxLevel7
exclude1
typeflat

Dockerのインストール

Docker環境は、AdamAppSDKがインストールされたUbuntu上に構築します。

...

Ubuntu 16.04及び、Ubuntu 18.04.02以降を使用している方は、本ページとともにDocker公式ドキュメントを参照してください。

Docker環境の構築

パッケージインストール

Docker環境の構築に必要なパッケージをインストールします。

Code Block
$ sudo apt-get update
$ sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common \
    qemu-user-static

リポジトリ追加

Docker社が提供している、Ubuntu用aptリポジトリをシステムに追加します。

...

Code Block
languagebash
$ cat /etc/apt/sources.list
(省略)
deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable
# deb-src [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable

Docker実行用ファイルのインストール

Docker実行に必要なファイルを、aptを使用してインストールします。

Code Block
languagebash
$ sudo apt-get update
$ sudo apt-get install docker-ce docker-ce-cli containerd.io

(任意)Dockerのプロキシ設定

インターネット接続にProxyサーバが必要な場合、DockerにProxy設定を行う必要があります。

公式ドキュメント を参照して、Proxy設定を行ってください。

Dockerコマンドの権限変更

dockerコマンドを一般ユーザでも使用できるように設定を変更します。

...

実行後、一度ログアウトし、再度ログインしてください。

Docker実行確認

Dockerが使用できるか確認します。

Code Block
languagebash
$ docker run hello-world
Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

Dockerイメージ作成

この章では、3章で説明したDockerを使用して、Pythonモジュールコンパイル用のDocker Imageを作成します。

Dockerfile作成

Docker Imageを作成する場合、一般的にDockerfileと呼ばれる、Image作成手順を記載したファイルを作成します。

...

Info

インターネット接続にProxyサーバが必要な場合

RUN apt-get update \

の前の行に、以下を追加してください。
ProxyサーバのURL及びポート番号は、使用するProxyサーバに即したものに変更してください。

ENV http_proxy=http://proxy.example.com:8080/ https_proxy=http://proxy.example.com:8080/

Dockerイメージの作成

4.1章で作成したDockerfileを使用して、Docker Imageを作成します。

...

Note

Dockerfileが存在するディレクトリに、以下の2ファイルが存在することを確認してください。

  • exec_entry.sh

  • qemu-aarch64-static

これらのファイルは、Pythonモジュール作成時に必要となります。
削除しないでください。

Pythonモジュール作成

コンパイル

AdamApp用Pythonモジュールは、以下手順で作成します。

...

以降の節にて、NumPy及びOpenCVの作成手順を例として記載します。

ソースコードダウンロード

Numpy及びOpenCVのソースコードを以下URLからダウンロードしてください。

...

ダウンロードしたファイルは、external/build/sample/docker/docker_volumeディレクトリに配置してください。

コンパイル手順更新

external/build/sample/docker/docker_volume/module_compile.shファイルに、コンパイル手順を記載します。

...

サンプルスクリプトとしてmodule_compile.shを用意しているため、今回はmodule_compile.shの変更は不要です。

コンパイル

dockerを用いてNumPyモジュール及びNumpyモジュールをコンパイルします。

...

このコマンドを実行すると、external/build/sample/docker/docker_volume/install_path以下に、コンパイル済みモジュールが作成されます。

AdamAppに配置

作成されたモジュールを、AdamAppで使用できるように配置します。

本ページではsrc/adamapp-py/jpeg_appを例とします。

Numpy

NumPyモジュールは以下ディレクトリにインストールされています。

...

src/adamapp-py/jpeg_app/python/site-packages/numpy

OpenCV

OpenCVについては、Python用モジュールだけではなく、OpenCVライブラリも必要となるため、あわせて配置します。

...

Code Block
languagebash
$ cd src/adamapp-py/jpeg_app/external/lib/aarch64-linux-gnu/
$ ln -s libopencv_world.so.3.4.7 libopencv_world.so.3.4
$ ln -s libopencv_world.so.3.4 libopencv_world.so

不要なファイルの削除

AdamAppでは、Pythonキャッシュファイル(__pycache__)は使用しません。

...