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)
《Buildozer打包实战指南》第二节 安装Kivy和Buildozer
《Buildozer打包实战指南》第二节 安装Kivy和Buildozer