python - Buildozer 和 Python-for-Android
问题描述
我在我的 Manjaro Linux 系统上创建了一个 Conda 环境。当我开发一个 Kivy 应用程序并运行它时,它运行良好。然后,当我将它编译成 APK 以在我的 Android 平板电脑上运行时,我遇到了一个奇怪的问题。我可以成功创建一个 APK 并将其安装在我的平板电脑上。但是... Python-For-Android 会在构建我的 APK 时下载我已经安装的软件包。有时它会下载我不使用的版本。有时它找不到我已经安装的包。
我的问题是:如何覆盖(可能在我的 Buildozer Spec 文件中)P4A 下载包(我猜它被称为食谱)并只使用我已经下载并安装在我的 Conda 环境中的包。(这样我编译的 APK 将与我在我的 Linux 机器上运行的 Kivy 应用程序完全相同。)
解决方案
我遇到了一个奇怪的问题。我可以成功创建一个 APK 并将其安装在我的平板电脑上。但是... Python-For-Android 会在构建我的 APK 时下载我已经安装的软件包。有时它会下载我不使用的版本
这不是一个奇怪的问题,这就是 python-for-android 的工作原理。它需要为android环境安装包,这不一定是使用本地的,即使是它仍然是python-for-android操作的一种更简单的方式。
我的问题是:如何覆盖(可能在我的 Buildozer Spec 文件中)P4A 下载包(我猜它被称为食谱)并只使用我已经下载并安装在我的 Conda 环境中的包
你不能。buildozer.spec 文件中有一些选项可以指定给定配方的源目录,但这需要指向项目的源目录(即对于 python 模块,根目录带有 setup.py),而不是在另一个 python 环境中安装包。
根据 conda 缓存包的方式,您可能可以将其指向它被拉取的内容,但这不适用于例如轮子。
这样我编译的 APK 将与我在我的 Linux 机器上运行的 Kivy 应用程序完全相同。
如果这是您的目标,您可以使用 指定事物的版本requirements=package==version
,例如requirements=colorama==0.4.4
. 但是,对于使用配方安装的软件包,并非所有版本都受支持,通常使用默认值是个好主意。例如,仅支持某些 python3 次要版本。
推荐阅读
- go - Golang 从 mongo ISODate 解析日期时间
- python - python中“get_all_members()”函数的Discord Bot问题
- c++ - 忽略其参数的函数
- java - 服务器启动时 Spring Boot 弹性搜索失败
- scilab - 为什么我的图表使用 scilab、xcos 绘制指数图?
- r - 如何按组选择同一行中的两列具有最大值的行
- php - “bind_param”返回 0 行
- scala - Spark scala选择数据框中的某些列作为地图
- javascript - 想了解 chrome 控制台的行为
- angular - Angular 9:上传图像时如何将 HEIF 文件格式转换为已知的网络格式