buildozer 因纯 python 库 (pint) 而失败

buildozer fails with pure python library (pint)

我正在尝试创建一个 kivy 应用程序,我想包含 pint 库,所以我将 pint 添加到我的 buildozer.spec 文件中:

requirements = kivy, hostpython2, pint

然而,当 运行

buildozer android_new debug deploy

我得到一个错误(见下面的日志)。如果我从需求中删除 pint 一切正常,但我不明白为什么这会导致错误,因为 pint 是一个没有依赖关系的纯 python 模块。

我不明白日志文件中的错误,但我确实看到了 ImportError: cannot import name HTTPSHandler 所以我也尝试在要求中包含 HTTPSHandler,但这并没有解决任何问题。

[INFO]:    # Installing pure Python modules
[INFO]:    The requirements (pint) don't have recipes, attempting to install them with pip
[INFO]:    If this fails, it may mean that the module has compiled components and needs a recipe.
[INFO]:    -> directory context /Users/me/Personal/grocery/.buildozer/android/platform/build/build
[INFO]:    -> running virtualenv --python=python2.7 venv
('name is', None, <class 'pythonforandroid.recipes.six.SixRecipe'>)
('name is', 'jnius', <class 'pythonforandroid.recipes.pyjnius.PyjniusRecipe'>)
('name is', None, <class 'pythonforandroid.recipes.kivy.KivyRecipe'>)
('path is', '/Users/me/.buildozer/android/platform/android-ndk-r9c/toolchains/arm-linux-androideabi-4.8/prebuilt/darwin-x86/bin/:/Users/me/.buildozer/android/platform/android-ndk-r9c/toolchains/arm-linux-androideabi-4.8/prebuilt/darwin-x86_64/bin/:/Users/me/.buildozer/android/platform/android-ndk-r9c:/Users/me/.buildozer/android/platform/android-sdk-20/tools:/Users/me/.buildozer/android/platform/apache-ant-1.9.4/bin:/Users/me/anaconda/envs/grocery/bin:/Users/me/Downloads/google-cloud-sdk/bin:/Users/me/instantclient_11_2:/Users/me/anaconda/bin:/usr/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/sbin:/Application/sDocker.app/Contents/Resources/bin')
objs_paths are ['/Users/me/Personal/grocery/.buildozer/android/platform/build/build/bootstrap_builds/sdl2-python2/collated_objects']
Copying libraries
Traceback (most recent call last):                                                                                                                                                  
  File "/Users/me/anaconda/envs/grocery/lib/python2.7/runpy.py", line 162, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "/Users/me/anaconda/envs/grocery/lib/python2.7/runpy.py", line 72, in _run_code
    exec code in run_globals
  File "/Users/me/Personal/grocery/.buildozer/android/platform/python-for-android-master/pythonforandroid/toolchain.py", line 837, in <module>
    main()
  File "/Users/me/Personal/grocery/.buildozer/android/platform/python-for-android-master/pythonforandroid/toolchain.py", line 834, in main
    ToolchainCL()
  File "/Users/me/Personal/grocery/.buildozer/android/platform/python-for-android-master/pythonforandroid/toolchain.py", line 489, in __init__
    getattr(self, args.subparser_name.replace('-', '_'))(args)
  File "/Users/me/Personal/grocery/.buildozer/android/platform/python-for-android-master/pythonforandroid/toolchain.py", line 147, in wrapper_func
    build_dist_from_args(ctx, dist, args)
  File "/Users/me/Personal/grocery/.buildozer/android/platform/python-for-android-master/pythonforandroid/toolchain.py", line 190, in build_dist_from_args
    build_recipes(build_order, python_modules, ctx)
  File "pythonforandroid/build.py", line 582, in build_recipes
  File "pythonforandroid/build.py", line 601, in run_pymodules_install
  File "pythonforandroid/logger.py", line 173, in shprint
  File "/Users/me/anaconda/envs/grocery/lib/python2.7/site-packages/sh.py", line 565, in next
    self.wait()
  File "/Users/me/anaconda/envs/grocery/lib/python2.7/site-packages/sh.py", line 500, in wait
    self.handle_command_exit_code(exit_code)
  File "/Users/me/anaconda/envs/grocery/lib/python2.7/site-packages/sh.py", line 516, in handle_command_exit_code
    raise exc(self.ran, self.process.stdout, self.process.stderr)
sh.ErrorReturnCode_1: 

  RAN: '/Users/me/anaconda/bin/virtualenv --python=python2.7 venv'

  STDOUT:
Running virtualenv with interpreter /Users/me/anaconda/envs/grocery/bin/python2.7
New python executable in /Users/me/Personal/grocery/.buildozer/android/platform/build/build/venv/bin/python2.7
Not overwriting existing python script /Users/me/Personal/grocery/.buildozer/android/platform/build/build/venv/bin/python (you must use /Users/me/Personal/grocery/.buildozer/android/platform/build/build/venv/bin/python2.7)
Installing setuptools, pip, wheel...
  Complete output from command /Users/joshuabrownin...d/venv/bin/python2.7 - setuptools pip wheel:
  Traceback (most recent call last):
  File "<stdin>", line 7, in <module>
  File "/Users/me/anaconda/lib/python2.7/site-packages/virtualenv-15.0.3-py2.7.egg/virtualenv_support/pip-8.1.2-py2.py3-none-any.whl/pip/__init__.py", line 16, in <module>
  File "/Users/me/anaconda/lib/python2.7/site-packages/virtualenv-15.0.3-py2.7.egg/virtualenv_support/pip-8.1.2-py2.py3-none-any.whl/pip/vcs/subversion.py", line 9, in <module>
  File "/Users/me/anaconda/lib/python2.7/site-packages/virtualenv-15.0.3-py2.7.egg/virtualenv_support/pip-8.1.2-py2.py3-none-any.whl/pip/index.py", line 30, in <module>
  File "/Users/me/anaconda/lib/python2.7/site-packages/virtualenv-15.0.3-py2.7.egg/virtualenv_support/pip-8.1.2-py2.py3-none-any.whl/pip/wheel.py", line 39, in <module>
  File "/Users/me/anaconda/lib/python2.7/site-packages/virtualenv-15.0.3-py2.7.egg/virtualenv_support/pip-8.1.2-py2.py3-none-any.whl/pip/_vendor/distlib/scripts.py", line 14, in <module>
  File "/Users/me/anaconda/lib/python2.7/site-packages/virtualenv-15.0.3-py2.7.egg/virtualenv_support/pip-8.1.2-py2.py3-none-any.whl/pip/_vendor/distlib/compat.py", line 31, in <module>
ImportError: cannot import name HTTPSHandler
----------------------------------------
...Installing setuptools, pip, wheel...done.
Traceback (most recent call last):
  File "/Users/me/anaconda/lib/python2.7/site-packages/virtualenv-15.0.3-py2.7.egg/virtualenv.py", line 2327, in <module>
    main()
  File "/Users/me/anaconda/lib/python2.7/site-packages/virtualenv-15.0.3-py2.7.egg/virtualenv.py", line 711, in main
    symlink=options.symlink)
  File "/Users/me/anaconda/lib/python2.7/site-packages/virtualenv-15.0.3-py2.7.egg/virtualenv.py", line 944, in create_environment
    download=download,
  File "/Users/me/anaconda/lib/python2.7/site-packages/virtualenv-15.0.3-py2.7.egg/virtualenv.py", line 900, in install_wheel
    call_subprocess(cmd, show_stdout=False, extra_env=env, stdin=SCRIPT)
  File "/Users/me/anaconda/lib/python2.7/site-packages/virtualenv-15.0.3-py2.7.egg/virtualenv.py", line 795, in call_subprocess
    % (cmd_desc, proc.returncode))
OSError: Command /Users/joshuabrownin...d/venv/bin/python2.7 - setuptools pip wheel failed with error code 1


  STDERR:

# Command failed: python -m pythonforandroid.toolchain create --dist_name=easierGroceries --bootstrap=sdl2 --requirements=kivy,pint,hostpython2 --arch armeabi-v7a --copy-libs --local-recipes /Users/me/Personal/groecery/.buildozer/android/platform/python-for-android/recipes --color=always --storage-dir=/Users/me/Personal/grocery/.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

好像是使用conda环境导致的错误。当我使用默认 python 安装(在我的 Mac OSX 上)时,问题就解决了。