首页 > 解决方案 > 如何使用 buildozer 将包导入 Kivy 应用程序

问题描述

我使用以下结构在包中创建了一个 kivy 应用程序:

.
├── bin
│   └── myapp-0.1-debug.apk
├── buildozer.spec
└── kivy_app
    ├── __init__.py
    ├── __main__.py
    ├── main.py
    └── source
        └── kivy_app.py

我希望使用我编写的另一个包中包含的一些功能:

.
└── python_pkg
    ├── __init__.py
    └── source
        └── version.py

模块 version.py 包含:

VERSION = '0.0.1'

当我插入该行时:

from python_pkg import VERSION

进入 kivy_app.py,它在 PC 上的 kivy 中完美运行。

我已将 python_pkg 添加到 buildozer.spec 的需求行中。

我可以构建一个 APK,但该应用程序无法在 Android 上运行。故障点的 logcat 输出为:

ImportError: cannot import name 'VERSION' from 'python_pkg' (/data/user/0/org.test.myapp/files/app/_python_bundle/site-packages/python_pkg/__init__.pyc)

python_pkg 中的_init_ .py 模块具有以下行:

from python_pkg.source.version import VERSION

必须如何安排设置才能正常工作?

标签: pythonkivybuildozer

解决方案


感谢@inclement,我有一个解决方案。我创建了一个指向 python_pkg 的符号链接并将其放在 kivy_app 目录中。应用程序的结构现在是

.
├── bin
│   └── myapp-0.1-debug.apk
├── buildozer.spec
└── kivy_app
    ├── __init__.py
    ├── __main__.py
    ├── main.py
    ├── python_pkg -> /home/jeff/projects/kivy_pkg/python_pkg/python_pkg
    └── source
        └── kivy_app.py

buildozer.spec 的需求行中不需要元素 python_pkg,我已将其删除。


推荐阅读