【问题标题】:Where To Place Chaquopy Package/Module For Files文件的 Chaquopy 包/模块在哪里放置
【发布时间】:2023-07-29 18:30:01
【问题描述】:

我正在尝试在运行计算机视觉 python 脚本的 Android 应用程序中引用两个文件。

按照此处的说明进行操作: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"

我相信我可能将我的模块放置在错误的位置,但说明没有详细说明模块文件的放置位置,也没有详细说明它们应该以什么格式引用,就路径而言。

文件层次结构的图像:

Current python script file hierarchy

Within package1 folder

【问题讨论】:

    标签: android python chaquopy


    【解决方案1】:

    问题发生是因为没有

     __init__.py
    

    我的 package1 文件夹中的文件。

    添加后我收到另一个错误,但这个导入问题已经解决。

    【讨论】:

      【解决方案2】:

      您的 Python 源代码应放在src/main/python,如the documentation 中所述。一个例子可以在demo app看到。

      如果您已经运行了*脚本,我假设该脚本必须已经在此文件夹中。在这种情况下,您只需将 package1 文件夹移入其中即可。

      【讨论】:

      • 您好,我已编辑问题以显示应用程序的文件层次结构。您是正确的,src/main/python *脚本正在运行,因为它在 android 应用程序的 python 日志中发生了 module not found package1 错误。我放置 package1 的位置有误吗?