如何在Kivy/iOS中添加openssl至requirements?不使用Buildozer
解决Kivy项目Xcode运行时的urllib3导入错误(不用Buildozer的场景)
嘿,我明白你的困境:用garden.mapview的时候依赖requests,结果在Xcode跑起来就报ImportError: No module named urllib3,手动跑了./toolchain.py build openssl却没效果,还不知道怎么把openssl加到requirements里。别慌,下面一步步帮你解决:
1. 先把OpenSSL的编译+安装做完整
你之前只跑了build但可能漏了install步骤,这才导致openssl没真正加入到你的项目环境里。按这个流程来:
- 切换到你的Kivy toolchain目录(就是放
toolchain.py的那个文件夹) - 先清理之前可能残留的编译垃圾,避免干扰:
./toolchain.py clean openssl - 然后重新编译,一定要加install步骤:
./toolchain.py build openssl ./toolchain.py install openssl - 如果你的项目需要兼容特定iOS架构(比如arm64或者x86_64模拟器),可以指定架构编译,更稳妥:
./toolchain.py build openssl --arch arm64,x86_64 ./toolchain.py install openssl --arch arm64,x86_64
2. 补上urllib3和requests的依赖
报urllib3找不到,本质是你的iOS项目环境里没装这个包,而requests完全依赖它。用toolchain把这俩也编译安装上:
- 先装urllib3:
./toolchain.py build urllib3 ./toolchain.py install urllib3 - 再装requests(虽然它会自动拉依赖,但手动装一遍能确保没问题):
./toolchain.py build requests ./toolchain.py install requests
3. 把这些依赖正式加入项目配置
因为你不用Buildozer,得手动告诉toolchain要把这些包打包进iOS项目:
- 如果是还没生成iOS项目,直接用这条命令创建,把所有需要的依赖都列在
--requirements里:./toolchain.py create <你的项目名> <你的主Python文件路径> --requirements=openssl,urllib3,requests,garden.mapview - 如果已经生成过项目了,找到项目目录里的
requirements.txt,把openssl、urllib3、requests加进去,然后运行更新命令:
另外,./toolchain.py update <你的项目名>garden.mapview如果是用garden install mapview装的,记得把~/.kivy/garden/mapview整个文件夹复制到你的项目根目录,这样toolchain打包时能识别到它。
4. 最后在Xcode里验证一下
打开Xcode里的Kivy项目,检查这几点:
Frameworks目录下有没有libcrypto.a和libssl.a(这俩是openssl的核心库)- 项目的Python路径配置里,有没有包含toolchain安装包的目录(一般在
toolchain/build/ios/<架构>/python/site-packages)
这样操作下来,应该就能解决urllib3的导入错误,让garden.mapview正常工作了!
内容的提问来源于stack exchange,提问作者mnegishi
相关产品推荐
相关产品推荐

