使用Buildozer打包时是否需添加库的依赖至spec文件?
Buildozer打包时是否需要手动添加库的所有依赖?
不需要手动添加所有依赖,核心原则是区分纯Python依赖和非纯Python依赖:
- 纯Python依赖:比如requests、six、oauth2client这类完全由Python代码编写的库,Buildozer会通过pip自动解析Pyrebase的依赖链,自动下载安装,无需手动添加到
requirements中。 - 非纯Python依赖:包含C/C++扩展、需要编译的库(比如pycryptodome、protobuf),这类库在Buildozer的编译环境中可能无法自动完成编译,或者容易出现版本兼容问题,需要手动添加到
requirements里,必要时还要指定兼容的版本号。
针对你的Pyrebase案例
初始可以只在buildozer.spec里添加核心依赖:
# (list) Application requirements requirements = python3, kivy, pyrebase
尝试打包,如果过程中出现某个依赖的编译错误或找不到的提示,再把对应的依赖补充进去。比如如果打包时pycryptodome编译失败,就补充进去:
requirements = python3, kivy, pyrebase, pycryptodome
如果遇到protobuf版本冲突,就指定兼容版本:
requirements = python3, kivy, pyrebase, pycryptodome, protobuf==4.21.2
小技巧
用pipdeptree查看依赖链是为了排查打包失败的原因,而不是用来一次性把所有依赖都加进去。优先尝试最小化的requirements,遇到问题再逐个补充,这样能避免不必要的版本冲突。
内容的提问来源于stack exchange,提问作者Enigami
相关产品推荐
相关产品推荐

