Kivy Buildozer AttributeError:“上下文”对象没有属性“hostpython”

Posted

技术标签:

【中文标题】Kivy Buildozer AttributeError:“上下文”对象没有属性“hostpython”【英文标题】:Kivy Buildozer AttributeError: 'Context' object has no attribute 'hostpython' 【发布时间】:2016-08-07 04:40:40 【问题描述】:

我正在尝试在我直接从 kivy.org 获得的虚拟机中使用 buildozer 为简单的 python3/kivy 应用程序构建一个 apk,这是第 2 天,仍然没有运气。我遇到了很多错误,安装了 pip,更新了 buildozer,pip 安装了 morse,pnglab,sh,appdirs,py3 的 setuptools,但现在我得到了这个错误,我必须承认它真的让我着迷,有人知道这是怎么回事吗?我非常感谢您的回答,因为我计划有一天将机器人开发作为我的工作,谢谢。这是错误: AttributeError: 'Context' 对象没有属性 'hostpython'

还有回溯:

Traceback (most recent call last):
File "/usr/lib/python2.7/runpy.py", line 162, in _run_module_as_main "__main__", fname, loader, pkg_name)
File "/usr/lib/python2.7/runpy.py", line 72, in _run_code exec code in run_globals
File "/home/kivy/Desktop/TextEditor/.buildozer/android/platform/python-for android-master/pythonforandroid/toolchain.py", line 747, in <module> main()
File "/home/kivy/Desktop/TextEditor/.buildozer/android/platform/python-for android-master/pythonforandroid/toolchain.py", line 744, in main ToolchainCL()
File "/home/kivy/Desktop/TextEditor/.buildozer/android/platform/python-for android-master/pythonforandroid/toolchain.py", line 323, in __init__ getattr(self, args.command)(unknown)
File "/home/kivy/Desktop/TextEditor/.buildozer/android/platform/python-for android-master/pythonforandroid/toolchain.py", line 105, in wrapper_func build_dist_from_args(ctx, dist, dist_args)
File "/home/kivy/Desktop/TextEditor/.buildozer/android/platform/python-for android-master/pythonforandroid/toolchain.py", line 142, in build_dist_from_args build_recipes(build_order, python_modules, ctx)
File "pythonforandroid/build.py", line 560, in build_recipes recipe.build_arch(arch)
File "/home/kivy/Desktop/TextEditor/.buildozer/android/platform/python-for android-master/pythonforandroid/recipes/python2/__init__.py", line 44, in build_arch self.do_python_build(arch)
File "/home/kivy/Desktop/TextEditor/.buildozer/android/platform/python-for android-master/pythonforandroid/recipes/python2/__init__.py", line 76, in do_python_build shprint(sh.cp, self.ctx.hostpython, self.get_build_dir(arch.arch))
AttributeError: 'Context' object has no attribute 'hostpython'
# Command failed: python -m pythonforandroid.toolchain create --dist_name=myapp --bootstrap=sdl2 --requirements=kivy --arch armeabi-v7a --copy-libs
#

【问题讨论】:

可能应该提到这个错误出现在 $ buildozer android_new 调试命令中。 【参考方案1】:

这是由新的 python-for-android 工具链(android_new buildozer 目标使用)中的一个错误引起的。您可以通过将您的 python 版本目标添加到需求来解决它,例如requirements = kivy,python2.

【讨论】:

嘿伙计,这是个好主意,requirements = kivy,python2 对我没有用,但 requirements = kivy,python 可以 对于新工具链(由 buildozer android_new 触发)它将是 python2,对于旧工具链(buildozer android)- python 旧工具链没有这个问题 这似乎将我的错误更改为kivy/graphics/instructions.pyx:75:14: Cannot convert 'void' to Python object 任何想法?【参考方案2】:

kivy 1.9 如果您在 buildozer.spec 文件中使用 python 2 编写代码

要求 = kivy,python2

对于python3 要求 = kivy,python3

【讨论】:

【参考方案3】:

实际上对于python3的要求是

requirements = kivy,python3crystax

你需要 Crytax NDK (https://www.crystax.net/en/android/ndk) 而不是 android NDK

【讨论】:

以上是关于Kivy Buildozer AttributeError:“上下文”对象没有属性“hostpython”的主要内容,如果未能解决你的问题,请参考以下文章

Buildozer 错误,CalledProcessError (Kivy)

kivy buildozer 虚拟机

《Buildozer打包实战指南》第二节 安装Kivy和Buildozer

《Buildozer打包实战指南》第二节 安装Kivy和Buildozer

Python、Kivy、Buildozer:使用 python-firebase/requests 时出错

第一个 Kivy/Buildozer android 项目出错