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 上)时,问题就解决了。
我正在尝试创建一个 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 上)时,问题就解决了。