Kivy+Buildozer安卓打包遇ModuleNotFoundError: No module named 'cachetools'
解决Kivy+gspread安卓打包后
cachetools模块缺失问题 问题背景
开发集成gspread的Kivy应用,PC端运行正常,安卓打包后崩溃,日志显示ModuleNotFoundError: No module named 'cachetools',即使已在buildozer.spec的requirements中添加cachetools。
当前requirements配置:
requirements = python3,kivy,gspread,oauth2client,google,google-auth,google-auth-oauthlib,httplib2,cachetools
错误日志:
05-21 07:53:13.707 1554 1618 I python : Traceback (most recent call last): 05-21 07:53:13.707 1554 1618 I python : File "/home/jayanta/Downloads/kivy/.buildozer/android/app/main.py", line 9, in <module> 05-21 07:53:13.707 1554 1618 I python : File "/home/jayanta/Downloads/kivy/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/python-installs/myapp/arm64-v8a/gspread/__init__.py", line 16, in <module> 05-21 07:53:13.708 1554 1618 I python : File "/home/jayanta/Downloads/kivy/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/python-installs/myapp/arm64-v8a/gspread/auth.py", line 14, in <module> 05-21 07:53:13.708 1554 1618 I python : File "/home/jayanta/Downloads/kivy/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/python-installs/myapp/arm64-v8a/google/oauth2/credentials.py", line 45, in <module> 05-21 07:53:13.708 1554 1618 I python : File "/home/jayanta/Downloads/kivy/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/python-installs/myapp/arm64-v8a/google/oauth2/reauth.py", line 40, in <module> 05-21 07:53:13.708 1554 1618 I python : File "/home/jayanta/Downloads/kivy/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/python-installs/myapp/arm64-v8a/google/oauth2/_client.py", line 36, in <module> 05-21 07:53:13.708 1554 1618 I python : File "/home/jayanta/Downloads/kivy/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/python-installs/myapp/arm64-v8a/google/auth/jwt.py", line 52, in <module> 05-21 07:53:13.709 1554 1618 I python : ModuleNotFoundError: No module named 'cachetools' 05-21 07:53:13.709 1554 1618 I python : Python for android ended.
解决方案
1. 清理Buildozer缓存并重新构建
旧缓存可能导致依赖未正确安装,执行以下命令:
buildozer android clean buildozer android debug deploy run
2. 指定cachetools的稳定版本
直接使用包名可能拉取最新版本,存在安卓兼容性问题,修改requirements为:
requirements = python3,kivy,gspread,oauth2client,google-auth,google-auth-oauthlib,httplib2,cachetools==5.3.0
(5.3.0是经过验证的适配安卓的稳定版本,可根据实际情况调整)
3. 适配安卓API和NDK版本
确保buildozer.spec中配置的安卓版本与依赖兼容:
android.api = 33 android.ndk = 25b
过高或过低的API/NDK版本可能导致依赖编译失败。
4. 验证依赖安装状态
如果以上步骤无效,检查构建目录下是否存在cachetools:
- 路径:
.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/python-installs/myapp/arm64-v8a/cachetools - 若不存在,说明依赖未安装成功,可尝试手动下载对应架构的wheel包,放入
buildozer.spec指定的p4a.local_recipes目录后重新构建。
内容的提问来源于stack exchange,提问作者DJ1411
相关产品推荐
相关产品推荐

