【问题标题】:Error during using buildozer for kivy packing使用 buildozer 进行 kivy 打包时出错
【发布时间】:2018-01-04 15:37:32
【问题描述】:

包装我使用了 kivy 手册中推荐的工具 我用于来自https://kivy.org/#download 的 kivy 打包虚拟机(Oracle 虚拟框和虚拟机设置) 对于 buildozer 安装,我使用了进程 https://github.com/kivy/buildozer,用于 Python 3。 我手动添加到 buildozer.spec 文件行:

requirements = python3crystax,kivy
android.ndk_path = ~/buildozer/crystax-ndk
log_level = 2

包装由下一段文字描述:

. . .
. . .
. . .
[INFO]:    Unpacking sdl2_image for armeabi-v7a
[INFO]:    -> running basename https://www.libsdl.org/projects/SDL_image/release/SDL2_image-2.0.1.tar.gz
                                                                                                     [INFO]:    -> directory context /media/sf_ForBuildozer/.buildozer/android/platform/build/build/bootstrap_builds/sdl2_gradle-python3crystax/jni
Traceback (most recent call last):
  File "/usr/lib/python2.7/runpy.py", line 174, 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 "/media/sf_ForBuildozer/.buildozer/android/platform/python-for-android-new-toolchain/pythonforandroid/toolchain.py", line 978, in <module>
    main()
  File "/media/sf_ForBuildozer/.buildozer/android/platform/python-for-android-new-toolchain/pythonforandroid/toolchain.py", line 975, in main
    ToolchainCL()
  File "/media/sf_ForBuildozer/.buildozer/android/platform/python-for-android-new-toolchain/pythonforandroid/toolchain.py", line 512, in __init__
    getattr(self, args.subparser_name.replace('-', '_'))(args)
  File "/media/sf_ForBuildozer/.buildozer/android/platform/python-for-android-new-toolchain/pythonforandroid/toolchain.py", line 149, in wrapper_func
    build_dist_from_args(ctx, dist, args)
  File "/media/sf_ForBuildozer/.buildozer/android/platform/python-for-android-new-toolchain/pythonforandroid/toolchain.py", line 193, in build_dist_from_args
    build_recipes(build_order, python_modules, ctx)
  File "pythonforandroid/build.py", line 559, in build_recipes
  File "pythonforandroid/recipe.py", line 520, in prepare_build_dir
  File "pythonforandroid/recipe.py", line 422, in unpack
  File "/usr/local/lib/python2.7/dist-packages/sh.py", line 1245, in __call__
    return RunningCommand(cmd, call_args, stdin, stdout, stderr)
  File "/usr/local/lib/python2.7/dist-packages/sh.py", line 633, in __init__
    self.wait()
  File "/usr/local/lib/python2.7/dist-packages/sh.py", line 651, in wait
    self.handle_command_exit_code(exit_code)
  File "/usr/local/lib/python2.7/dist-packages/sh.py", line 672, in handle_command_exit_code
    raise exc
sh.ErrorReturnCode_2: <exception str() failed>
# Command failed: /usr/bin/python -m pythonforandroid.toolchain create --dist_name=myapp --bootstrap=sdl2 --requirements=python3crystax,kivy --arch armeabi-v7a --copy-libs --color=always --storage-dir=/media/sf_ForBuildozer/.buildozer/android/platform/build
#
# Buildozer failed to execute the last command
# The error might be hidden in the log above this error
# Please read the full log, and search for it before
# raising an issue with buildozer itself.
# In case of a bug report, please add a full log with log_level = 2

我的问题:如果我为 python 3 使用 buildozer 安装,为什么使用 python 2.7?它是我的问题的根源吗?

【问题讨论】:

    标签: python kivy buildozer


    【解决方案1】:

    Buildozer 是一个 Python 模块,它执行一些操作来打包您的应用程序。该模块由它安装到的 Python 版本运行。在您的情况下,您安装了带有 buildozer 的 Python 2。

    buildozer.spec 中的要求与您当前的环境无关。这个要求告诉 buildozer 它应该下载哪些配方/模块,如果需要,编译并打包到你的 Android 应用程序中。 python3crystax means buildozer 将在您的 Android 应用程序中打包位于 Crystax NDK(并且已经为 Android 编译)中的 Python 3 以运行它的代码。

    【讨论】:

    • @ 谢谢!我忘了使用虚拟机,我安装了 python 3,结果和我的客户一样。我也必须安装 kivy 吗?
    • @jasan 你的意思是你想使用 Python 3 运行 buildozer?您应该install pip3 并为 python 3 安装 buildozer:sudo pip3 install buildozer。并运行它:python3 -m buildozer android debug。但我不是 100% 确定最后一个命令,我自己也没有在 Python 3 下尝试过 buildozer。
    • @Mikhail,我为 python 3.4 编写的代码。 Buildozer 是为 python 3 安装的(这里是github.com/kivy/buildozer),用于虚拟机的 python 是用命令安装的:python3 setup.py build
    • @Mikhail,你是不是很忙,还是我的问题不好没有回答?
    • @jasan 我想我只是错过了通知,抱歉。好的,你为它安装了 python 3 和 buildozer,你试过用python3 -m buildozer android debug 运行它吗?
    猜你喜欢
    • 2015-06-26
    • 2016-12-21
    • 2021-04-09
    • 2016-07-03
    • 2023-03-27
    • 2020-08-19
    • 2016-11-03
    • 2021-04-07
    • 2019-07-04
    相关资源
    最近更新 更多