You need to enable JavaScript to run this app. Chaquopy Android触发multiprocessing sem_open缺失ImportError
优惠活动
大模型
产品
解决方案
定价
更多

Chaquopy Android触发multiprocessing sem_open缺失ImportError

项目开发背景
  • 开发的Python应用可在Windows平台正常构建、运行。
  • 根据Chaquopy版本说明,sem_open相关的同步原语缺失问题早在7.0.3版本就已修复,但当前使用9.1.0版本在Android虚拟机上运行时,依然触发对应报错。
  • 目前已提供完整的根目录Gradle配置与运行崩溃日志,需要问题排查指导,如有需要可随时补充更多错误信息或logcat输出。

项目根目录Gradle构建配置

顶层构建脚本:

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    ext.kotlin_version = "1.4.21"
    repositories {
        google()
        jcenter()
        maven { url "https://chaquo.com/maven" }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:4.1.1'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        classpath "com.chaquo.python:gradle:9.1.0"

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

全局项目配置:

allprojects {
    repositories {
        google()
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

运行崩溃日志

应用在Android平台启动失败,Android Studio输出的完整崩溃栈如下:

2021-01-05 17:56:53.977 12952-12952/io.emerge.tactileengine E/AndroidRuntime: FATAL EXCEPTION: main
    Process: io.emerge.tactileengine, PID: 12952
    java.lang.RuntimeException: Unable to start activity ComponentInfo{io.emerge.tactileengine/io.emerge.tactileengine.MainActivity}: com.chaquo.python.PyException: ImportError: This platform lacks a functioning sem_open implementation, therefore, the required synchronization primitives needed will not function, see issue 3770.
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2778)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2856)
        at android.app.ActivityThread.-wrap11(Unknown Source:0)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1589)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:164)
        at android.app.ActivityThread.main(ActivityThread.java:6494)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
     Caused by: com.chaquo.python.PyException: ImportError: This platform lacks a functioning sem_open implementation, therefore, the required synchronization primitives needed will not function, see issue 3770.
    at <python>.multiprocessing.synchronize.<module>(synchronize.py:30)
    at <python>.zipimport.load_module(<frozen zipimport>:259)
    at <python>.java.chaquopy.import_override(import.pxi:60)
    at <python>.multiprocessing.queues.__init__(queues.py:39)
    at <python>.multiprocessing.context.Queue(context.py:103)
    at <python>.top.tactile_engine.setup_unity_comm(tactile_engine.py:67)
    at <python>.top.tactile_engine.run(tactile_engine.py:54)
    at <python>.asyncio.base_events.run_until_complete(base_events.py:612)
    at <python>.asyncio.runners.run(runners.py:43)
    at <python>.top.tactile_engine.main(tactile_engine.py:148)
    at <python>.chaquopy_java.call(chaquopy_java.pyx:281)
    at <python>.chaquopy_java.Java_com_chaquo_python_PyObject_callAttrThrows(chaquopy_java.pyx:253)
    at com.chaquo.python.PyObject.callAttrThrows(Native Method)
    at com.chaquo.python.PyObject.callAttr(PyObject.java:209)
    at io.emerge.tactileengine.MainActivity.onCreate(MainActivity.kt:33)
    at android.app.Activity.performCreate(Activity.java:7009)
    at android.app.Activity.performCreate(Activity.java:7000)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1214)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2731)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2856) 
    at android.app.ActivityThread.-wrap11(Unknown Source:0) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1589) 
    at android.os.Handler.dispatchMessage(Handler.java:106) 
    at android.os.Looper.loop(Looper.java:164) 
    at android.app.ActivityThread.main(ActivityThread.java:6494) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807) 

内容的提问来源于stack exchange,提问作者Sabersimon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.09 21:36:04