如何使用buildozer将软件包导入Kivy应用程序

时间:2019-09-04 10:18:02

标签: python kivy buildozer

我使用以下结构在软件包中创建了一个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

如何安排设置使其起作用?

1 个答案:

答案 0 :(得分:0)

感谢@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元素,我已将其删除。