Chaquopyからpip経由でpythonライブラリをインストール【Androidアプリ開発】
Pythonでのパッケージ管理といえばpip
Chaquopyでも当然pipが使えます。
しかもAndroid Studio内から直接です。
その入れ方とか設定方法を解説
ChaquopyはAndroidからpythonを呼び出せるAPI
Chaquopyはやっぱり知名度低いですね。
でもAndroidからpythonを独立実行できる優れものです。
▼ 詳しい導入手順はこのnoteで解説した
この手順でChaquopy導入してる前提です。この先の内容は
まずはChaquopyでのpythonライブラリの制限について
Chaquopyはほぼ全ての標準ライブラリに対応してます。
ところが以下はOS互換性などで使えません
crypt
grp
nis
spwd
そして以下も諸事情があって使えないみたいです。
curses
dbm.gnu
dbm.ndbm
readline
tkinter
turtle
最初の4つはOS依存のパッケージであり、Androidでは動かせない模様です。もしこれらのライブラリが必要な場合、代替ライブラリを探してください。
逆に言えばライブラリの制限はこれだけ。上記10個とそれらに依存するライブラリでなければ、ほぼ何でもインストールできます。
ただしアプリ容量が許す範囲内です。
数百MBになるようなライブラリもインストールできるし動かせるけど、それが快適に動くかは別問題。そもそもGooglePlayでは 150MB >= のAPKは受け付けてくれません。
build.gradleにてpipからライブラリインストール
では具体的なインストール方法について
まずアプリレベルのbuild.gradleを開きます
▼ 赤枠で囲ったのがそれ
▼ その中のdefaultConfigブロックに注目
defaultConfig {
applicationId "com.example.example"
minSdkVersion 21
targetSdkVersion 31
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
/// 以下略…
}
androidブロック => defaultConfigブロックには色々な設定が書けます。以前の記事でもここにABIFiltersとかPythonビルドパスの設定を書きました。
そのdefaultConfigブロックにさらにpythonブロックを追加します。その下のpipブロックにインストール構成を書けばOKです。
▼ 例えばrequestsをインストールしたい場合
defaultConfig {
applicationId "com.example.example"
minSdkVersion 21
targetSdkVersion 31
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
python {
pip {
/// requestsインストール
install "requests"
}
}
/// 以下略…
}
このように install "requests" と書けば必要なパッケージがインストール可能。これ以外は特別なことをする必要もありません。
それからライブラリバージョンを指定したい場合、== のあとにバージョン名を書けばいいだけです。(次のコードを参照)
▼ バージョン名指定でインストール
python {
pip {
/// requestsインストール
install "requests==2.24.0"
/// numpyインストール
install "numpy"
/// pillowインストール
install "pillow"
}
}
Pythonスクリプトからは普通に import すればOK
requests・通信系ライブラリを使う場合はここに注意!
もしrequests・通信系ライブラリを使う場合…
必ずしておくべきAndroid側設定があります。
それはINTERNETパーミッションの付与です
▼ AndroidManifest.xmlに以下を追加する
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
これないと通信できないので注意!
この記事が気に入ったらサポートをしてみませんか?