Android Studio中Chaquopy库导入及.py文件调用问题求助
解决Chaquopy在Android Studio中调用Python文件的问题
一、修正Gradle配置错误
你当前的app模块build.gradle.kts中Chaquopy插件设置为apply false,会导致插件未在app模块生效,需按以下方式调整:
修改app模块build.gradle.kts:
plugins { alias(libs.plugins.android.application) // 移除apply false,直接在app模块应用插件 id("com.chaquo.python") version "15.0.1" } android { namespace = "com.kanjengdev.biomey" compileSdk = 34 defaultConfig { applicationId = "com.kanjengdev.biomey" minSdk = 24 targetSdk = 34 versionCode = 1 versionName = "2.4 (Beta)" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" // 添加Chaquopy的Python配置块 python { // 指定使用的Python版本,例如3.10(需与Chaquopy版本兼容) version = "3.10" // 若需安装Python第三方库,可在此添加 // pip { install("numpy") } } } buildTypes { release { isMinifyEnabled = false proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" ) } } compileOptions { sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 } buildFeatures { viewBinding = true } } dependencies { implementation(libs.appcompat) implementation(libs.material) implementation(libs.activity) implementation(libs.constraintlayout) implementation(libs.navigation.fragment) implementation(libs.navigation.ui) testImplementation(libs.junit) androidTestImplementation(libs.ext.junit) androidTestImplementation(libs.espresso.core) // 移除手动添加的chaquopy依赖,应用插件后会自动引入 // implementation(libs.chaquopy) }
项目级build.gradle.kts和settings.gradle.kts的配置无需修改,当前设置是正确的。
二、放置Python文件
在app模块下创建src/main/python目录,将你的.py文件放入该目录。例如创建test.py:
def get_greeting(name): return f"你好,{name}!"
三、在Android代码中调用Python逻辑
在Activity或Fragment中初始化Chaquopy并调用Python函数:
import com.chaquo.python.Python import com.chaquo.python.android.AndroidPlatform import android.widget.Toast import androidx.appcompat.app.AppCompatActivity import android.os.Bundle class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) // 初始化Chaquopy平台 if (!Python.isStarted()) { AndroidPlatform.initialize(this) } // 获取Python实例 val python = Python.getInstance() // 导入目标Python模块 val testModule = python.getModule("test") // 调用模块中的函数并获取结果 val greetResult = testModule.callAttr("get_greeting", "测试用户").toString() // 展示结果(示例用Toast) Toast.makeText(this, greetResult, Toast.LENGTH_SHORT).show() } }
关于文档不一致的说明
Chaquopy不同版本的配置逻辑有差异,你使用的15.0.1版本需遵循以下核心规则:
- 插件需在app模块直接应用,无需手动添加依赖
- Python相关配置需放在
defaultConfig的python代码块内 - Python文件必须放在
src/main/python目录,Chaquopy会自动打包该目录下的所有文件
内容的提问来源于stack exchange,提问作者Ardityo Cahyo
相关产品推荐
相关产品推荐

