我使用chaquopy将Python集成到Android中。我正在制作一个相当简单的应用程序,使用了openai和webvtt库;因此,我的src/main/script.py文件开头包含了“import openai”和“import webvtt”。我的build.gradle文件中也包含以下代码块:
android { namespace 'com.example.python_integration' compileSdk 33 defaultConfig { python{ pip{ install "numpy" } } python{ pip{ install "openai" } } python{ pip{ install "tk" } } python{ pip{ install "webvtt_py" } }
当我在模拟器中运行应用程序时,会收到警告:“aiohttp 3.8.1需要charset-normalizer<3.0,>=2.0,但你使用的是charset-normalizer 3.2.0,这是不兼容的。”
我尝试在gradle中添加以下实现:
implementation ‘com.github.Ousret:charset_normalizer:3.0.0’
以及尝试
implementation ‘com.github.mizosoft.charset-normalizer:charset-normalizer:3.0.0’
但我仍然收到错误/警告。这个警告重要吗?我是否需要添加另一段代码块,以便gradle使用之前的charset-normalizer版本?应用程序仍然可以运行,但我还在编辑我的script.py,所以我无法判断这是否是一个关键错误,目前我只是确保我可以让原始Python脚本中需要的所有库正常工作。有时我在模拟器中构建应用程序时,甚至不会在构建日志中看到这个错误,所以它随机出现让我感到有些沮丧。也许我完全误解了情况?
回答:
这个警告是否关键,取决于你的应用程序的功能。但你可以通过直接添加指定版本的要求来解决这个问题:
install "charset-normalizer<3.0,>=2.0"
你每次构建应用程序时都不会看到警告的原因是,只有当你更改pip
代码块或其他相关设置(如Python版本)时,pip才会重新运行。
附加说明:
- 你可以在
python { pip }
代码块中包含多个install
行,因此你不需要多次复制整个代码块。 - Gradle的
dependencies
代码块与你的Python需求完全独立,因此不必编辑它。