Где разместить пакет / модуль Chaquopy для файлов - PullRequest
1 голос
/ 20 мая 2019

Я пытаюсь сослаться на два файла в приложении Android, в котором я запускаю скрипты Python для компьютерного зрения.

Следуя приведенным здесь инструкциям: https://chaquo.com/chaquopy/doc/current/android.html#resource-files

Я создал в папке импортакоторый включает в себя два файла, на которые должен ссылаться мой сценарий.Эта папка называется «package1» и находится на том же уровне, что и файл gradle сборки моего приложения.

Мой файл gradle включает в себя следующее, как показано в примере:

python {
            // If Chaquopy fails to find Python on your build machine, enable and edit the
            // following line to point to a Python 3.4+ executable.
            // buildPython "C:/Python36/python.exe"

            extractPackages "package1"

...
    }

И мой скрипт на pythonсодержит следующее:

from os.path import dirname, join


import package1
haar_path = open(join(dirname(package1.__file__), "haar.xml"))
model_path = open(join(dirname(package1.__file__), "model.hdf5"))

Однако, когда мой apk запущен на моем устройстве, я получаю следующую ошибку:

"No module named package1"

Я полагаю, что я могу разместить свой модуль в неправильном месте, но в инструкциях не дается подробностей о том, где размещать файлы модуля, и в каком формате они должны указываться в терминах пути.

Изображения иерархии файлов:

Текущая иерархия файлов сценариев Python

В папке package1

Ответы [ 2 ]

1 голос
/ 20 мая 2019

Проблема возникла из-за того, что в моей папке package1 не было файла

 __init__.py

.

После добавления я получаю другую ошибку, но эта проблема импорта была решена.

0 голосов
/ 20 мая 2019

Ваш исходный код Python должен быть помещен в src/main/python, как описано в документации .Пример можно увидеть в демонстрационном приложении .

Если вы уже запустили скрипт верхнего уровня, я предполагаю, что скрипт уже должен быть в этой папке.В этом случае все, что вам нужно сделать, это переместить вашу папку package1 в нее.

...