Kivymd 应用在安卓手机上崩溃 ModuleNotFoundError: No module named 'PIL'。

6
我的Kivy应用在安卓手机上启动时崩溃。 buildozer logcat显示以下错误:
02-21 17:09:58.777 14941 14979 I python  :  ModuleNotFoundError: No module named 'PIL'
02-21 17:09:58.777 14941 14979 I python  : Python for android ended.

以下为我的buildozer.spec需求:
requirements = python3,kivy==2.0.0,git+https://github.com/HeaTTheatR/KivyMD.git,sdl2_ttf==2.0.15,python-dateutil,requests,urllib3,chardet,idna,plyer,android,jnius,oscpy

据我了解,只有KivyMD依赖于PIL。 该应用程序在我的Mac上运行得非常完美,在Android手机上以前也可以正常使用。但现在出现了错误,因此我感到困惑,并希望得到任何帮助。 提前感谢!

2个回答

6

正如你可能已经知道的那样,KivyMD依赖于PIL而不是Kivy。您正在使用git中的最新版本的KivyMD在您的应用程序中,它依赖于PIL。要消除错误,只需在您的buildozer.spec文件的requirements中添加pillow即可。


嗨,我已经尝试过了,但是 APK 无法编译,buildozer 崩溃。 - Oleksandr K
应该可以正常工作。你能发一下错误吗?你添加了PIL还是pillow?你应该添加pillow而不是PIL - Ankit Sangwan
所以,当我将pillow添加到buildozer.spec文件中时,我会得到以下错误:"raise CommandNotFound(k) sh.CommandNotFound: cmake"。我已经阅读过了,目前还没有适用于pillow的配方。但是这个应用程序在3天前还能够编译和在Android上运行... - Oleksandr K
当运行sudo -H apt install cmake时,我收到了这样的消息:无法在“/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/bin/apt”(-1)处找到可执行文件。因此,我已经从官方网站安装了cmake二进制文件。但是,在buildozer中仍然存在相同的错误。 - Oleksandr K
是的,我已经使用homebrew安装了cmake。并在buildozer.spec中添加了pillow。apk编译完成,但应用程序仍在启动时崩溃。虽然这次logcat没有显示任何错误。但由于您已经帮助解决了“没有PIL模块”的错误,我将接受您的答案。 - Oleksandr K
显示剩余2条评论

2
如果您在按照正确的答案操作后仍没有得到期望的结果,请参考存储库中KivyMD-kitchen_sink应用程序的buildozer.spec文件中指定的要求。
这是链接 -> Kitchen_Sink_Repo 提示:
如果更改了“requirements”后仍然看到应用程序崩溃,请运行以下命令。
buildozer android clean
buildozer android debug deploy run

为什么?
因为当buildozer安装早期指定的要求时,很可能会安装不符合您应用程序规格的版本。所以先清理它,然后再运行。
现在您应该可以继续了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接