如何将自定义要求添加到 buildozer.spec 文件

Posted

技术标签:

【中文标题】如何将自定义要求添加到 buildozer.spec 文件【英文标题】:How can I add custom requirement to buildozer.spec file 【发布时间】:2021-07-17 17:12:22 【问题描述】:

我的 buildozer.spec 文件如下所示。

requirements = python3, mysql-connector-python, plyer, android, futures, datetime,kivy, kivymd

我想使用 kivymd 的开发版本,所以我把它改成了这样:

requirements = python3, mysql-connector-python, plyer, android, futures, datetime, https://github.com/kivymd/KivyMD/archive/master.zip

但它没有接缝工作。它立即崩溃。 我也试过这个:

requirements = python3, mysql-connector-python, plyer, android, futures, datetime, kivy, https://github.com/kivymd/KivyMD/archive/master.zip

但我得到了相同的结果。

更改需求的正确方法是什么? 或者我可以在本地下载并添加它?

编辑: 我意识到我可以使用选项requirements.source 所以我这样做了:

requirements = python3, mysql-connector-python, plyer, android, futures, datetime, kivy, kivymd

# (str) Custom source folders for requirements
# Sets custom source for any requirements with recipes
requirements.source.kivymd = /home/sylwek/buildozer_Test1/KivyMD-master

但是还是不行……

【问题讨论】:

如果您在需求行中放置的内容不能作为配方提供,则将传递给 pip,因此您需要编写任何 pip 期望安装 github 存储库的内容。如果这不起作用,则问题可能出在其他地方,您需要阅读错误以进行调试。 第一次使用 kivymd 导入时出现错误。所以很明显问题就在那里。 Mayby 有什么办法可以做 'github.com/kivymd/KivyMD/archive/master.zip as kivymd' 或类似的事情。 我什至尝试将 kivymd 文件粘贴到我的应用程序文件夹中。但它仍然不起作用,但它仍然给我“ModuleNotFoundError: No module named 'kivymd'” 在导入时出现错误并不意味着问题存在,这意味着发生了许多不同故障中的任何一个以阻止导入。它可能根本无法构建/包含 kivymd。 我该怎么办?当我在我的电脑上安装这个存储库时,它运行良好(pip install github.com/kivymd/KivyMD/archive/master.zip)但这里有问题。 【参考方案1】:

我已经解决了这个问题。我使用此配置调试了测试应用程序:requirements = python3,kivy==2.0.0rc4,kivymd, pillow 并在调试后(我已经测试过它可以正常工作)。 我手动编辑了这个文件夹:/Documents/my_project/.buildozer/android/platform/build-armeabi-v7a/dists/myapp__armeabi-v7a/_python_bundle/_python_bundle/site-packages/kivymd 带有我想要的版本的文件。再次调试并用简单的脚本进行测试:

from kivymd.app import MDApp
from kivymd.uix.label import MDLabel
import kivymd

class MainApp(MDApp):
    def build(self):
        return MDLabel(text=f"kivymd version: kivymd.__version__", halign="center")

MainApp().run()

令人惊讶的是它起作用了...... 我知道这不是最好的解决方案,但它确实有效;)。

【讨论】:

以上是关于如何将自定义要求添加到 buildozer.spec 文件的主要内容,如果未能解决你的问题,请参考以下文章

将自定义类的集合添加到 Settings.Settings

如何将自定义挂钩添加到 Woocommerce 的自定义插件

如何将自定义事件添加到 jQuery 插件模式中

如何将自定义视图添加到布局?

如何将自定义文本添加到primeng分页器

如何将自定义字段添加到 WooCommerce 注册表单