質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%

Q&A

解決済

1回答

765閲覧

【Python】Kivy Launcherにて、パッケージ(モジュール)を使用する方法

saitou_san

総合スコア32

0グッド

0クリップ

投稿2023/02/06 06:17

編集2023/02/06 07:29

実現したいこと

Kivyというフレームワークで開発したスマホアプリをAndroid上で実行するために「Kivy Launcher」というAndoroidアプリを使用しています。

Kivy Launcher上でpythonコードを実行する際に、PCでダウンロードしたパッケージを使いたいです。

前提

Kivyというフレームワークを使い、PC(Windows)で正常に動くアプリをpythonで作りました。
コードの中でpipでインストールしたパッケージをimportして使っているのですが、Kivy Launcherでimportしようとするとエラーが出ます。(当たり前)

パッケージが保存されている場所がC:\Users\Owner\AppData\Local\Programs\Python\Python310\lib\site-packages
だとわかったので

とりあえず、
https://self-development.info/python%E3%81%A7%E3%82%B9%E3%83%9E%E3%83%9B%E3%82%A2%E3%83%97%E3%83%AA%E3%82%92%E9%96%8B%E7%99%BA%E3%81%99%E3%82%8B%E3%80%90kivy-launcher%E3%80%91/
を参考にして作ったプロジェクトのフォルダーの中(/storage/emulated/0/kivy/appli/)にパッケージをフォルダごとコピペして、android.txtも置いて実行してみましたが上手くいきませんでした。

Kivy Launcher上でpipでインストールしたパッケージを使用する方法を教えてください。

発生している問題・エラーメッセージ

[INFO ] Logger: Record log in /storage/emulated/0/kivy/appli/.kivy/logs/kivy_23-02-06_7.txt [INFO ] Kivy: v1.9.1 [INFO ] Python: v2.7.2 (default, Mar 20 2016, 23:30:13) [GCC 4.8] [INFO ] Factory: 179 symbols loaded [WARNING ] stderr: /data/user/0/org.kivy.pygame/files/lib/python2.7/site-packages/kivy/core/image/img_pygame.py:13: RuntimeWarning: import cdrom: No module named cdrom [WARNING ] stderr: (ImportError: No module named cdrom) [INFO ] Image: Providers: img_tex, img_dds, img_gif, img_pygame, img_pil (img_ffpyplayer ignored) [WARNING ] stderr: Traceback (most recent call last): [WARNING ] stderr: File "main.py", line 8, in <module> [WARNING ] stderr: import requests [WARNING ] stderr: File "/storage/emulated/0/kivy/appli/requests/__init__.py", line 43, in <module> [WARNING ] stderr: import urllib3 [WARNING ] stderr: ImportError: No module named urllib3

該当のソースコード

python

1# -*- coding: utf-8 -*- 2print('start') 3import inspect 4from kivy.app import App 5#from kivy.factory import Factory 6from kivy.uix.boxlayout import BoxLayout 7from kivy.uix.floatlayout import FloatLayout 8import requests 9print(inspect.getfile(requests)) 10from kivy.properties import ObjectProperty 11 12from passlib.context import CryptContext 13print(inspect.getfile(CryptContext)) 14pwt_context = CryptContext(schemes=["bcrypt"], deprecated="auto") 15 16#省略 17 18AppliApp().run()

試したこと

・/storage/emulated/0/kivy/appli/にそのままフォルダごとパッケージをコピペした
※requestsモジュールならrequestsフォルダ
・kivyのパッケージしかimportしない簡単なコードを動かしてみた

python

1from kivy.app import App 2from kivy.uix.button import Button 3 4class MyApp(App): 5 def build(self): 6 return Button(text='Hello,world.') 7 8MyApp().run()

/storage/emulated/0/kivy/my/フォルダにこのコードとandroid.txtを置いただけで正常に動作した。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。
Windows10
Pixel6(最新バージョン)
Python(PC上) v3.10.9
Kivy v2.1.0
Kivy Launcherダウンロード元:
https://www.androidlist.jp/item/android-apps/190007/org-kivy-pygame/apk/download/?id_apk=recent/

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

saitou_san

2023/02/06 23:17

自分のパソコンがWindowsなのですが、コマンドプロンプトでtoochainが使えないみたいです
jbpb0

2023/02/07 00:16

> Kivy Launcher上でpythonコードを実行する際に、PCでダウンロードしたパッケージを使いたい https://stackoverflow.com/questions/31971805/kivy-launcher-not-working-with-numpy に、 「Kivy Launcher is only capable of running basic Kivy apps and is really meant for demonstration and testing purposes. If you need to use extra libraries such as numpy, you need to build your own APK using Buildozer and python-for-android.」 とあります (書かれたのが2015年とだいぶ前なので、現在は状況が変わってるかもしれませんが)
jbpb0

2023/02/07 01:23 編集

https://qiita.com/dario_okazaki/items/4f6373051afb70b794d9 の「参考 Pythonの外部ライブラリを使用するには」に 「モバイルでMatplotlibなどのPythonの標準ライブラリ以外を使用するにはKivy gardenというアドオンの機能を使用して実現することになります。」 とあります https://github.com/kivy-garden の「Repositories」に用意されてるものだけが、 http://hhsprings.pinoko.jp/site-hhs/2016/08/kivylauncher-%E7%92%B0%E5%A2%83%E3%81%A7%E3%82%B0%E3%83%A9%E3%83%95-kivy-garden-%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6/ に書かれてるようにして組み込めるのかも > requestsモジュールならrequestsフォルダ https://qiita.com/dario_okazaki/items/4f6373051afb70b794d9 の「前回のアプリを動してみる」に 「Requests ライブラリが使用できなかったためKivy独自のライブラリUrlRequestを使用し、それに関する修正を行う。」 とあります 【追記】 https://github.com/kivy-garden の「Repositories」に用意されてるものは、もちろん誰かが作ったものなのだから、同様なものを自分で作れれば、おそらくそれを入れることはできるでしょうね
saitou_san

2023/02/07 03:53

いろいろと調べていただきありがとうございます。取り組んでみます!
saitou_san

2023/02/07 07:38

無知な質問で申し訳ないのですが、Kivy-gardenとは何なんですか?ほかのパッケージとは何が違うのでしょうか?
jbpb0

2023/02/07 09:03 編集

私も、よく知りません https://blog.8tak4.com/post/165182430555/participated-in-pyconjp2017 の「(Day 1) Kivyによるアプリケーション開発のすすめ」のスライドの38ページに 「拡張機能。個別にインストールする。」 とあり、そのwebページのスライドのちょっと下に 「拡張機能は Kivy Garden によって管理。mapview や matplotlib などが用意されている。」 とあります https://kivy.org/doc/stable/api-kivy.garden.html に 「Garden is a project to centralize addons for Kivy maintained by users.」 「The garden flower widgets are contributed by regular users such as yourself.」 とあります kivyの標準機能以外のものを、いろんな人がアドオン(拡張機能)にしたものを、簡単にインストールして使えるように、集めて管理してるのではないですかね (kivy専用のpipみたいなもの??)
guest

回答1

0

自己解決

質問を読んでくださった方、ありがとうございました。パッケージはフォルダごとmain.pyと同じ階層に置く方法で正常に動作するみたいです。いろいろと試行錯誤してしまった結果、変な思い込みをしてしまっていたようです。
大抵のパッケージはそのフォルダ一つを置くだけでは動かないです。エラーログを見ながら適宜必要なパッケージを入れてあげるようにすると良いです。エラーログは内部ストレージ/kivy/<プロジェクト>/.kivy/logsにあります。

投稿2023/02/08 00:05

saitou_san

総合スコア32

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問