【问题标题】:Buildozer and Python-for-AndroidBuildozer 和 Python-for-Android
【发布时间】:2021-03-01 00:24:18
【问题描述】:
我在我的 Manjaro Linux 系统上创建了一个 Conda 环境。
当我开发一个 Kivy 应用程序并运行它时,它运行良好。
然后,当我将它编译成 APK 以在我的 Android 平板电脑上运行时,我遇到了一个奇怪的问题。我可以成功创建一个 APK 并将其安装在我的平板电脑上。
但...
Python-For-Android 会在构建我的 APK 时下载我已经安装的包。有时它会下载我不使用的版本。有时它找不到我已经安装的包。
我的问题是:我如何覆盖(可能在我的 Buildozer Spec 文件中)P4A 下载包(我猜它被称为食谱)并只使用我已经下载并安装在我的 Conda 环境中的包。 (这样我编译的 APK 将与我在我的 Linux 机器上运行的 Kivy 应用程序完全相同。)
【问题讨论】:
标签:
python
kivy
buildozer
p4a
python-for-android
【解决方案1】:
我遇到了一个奇怪的问题。我可以成功创建一个 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 次要版本。