You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Xcode14.2编译Kivy-iOS应用报错:ImportError模块导出函数未定义

Kivy iOS编译错误排查与解决

问题背景

升级Xcode14.2后,在iPhone14模拟器编译Kivy应用时触发ImportError: dynamic module does not define module export function错误,错误指向kivy_event模块。环境配置:

  • Kivy 2.2.0
  • Python 3.10.10
  • 通过git clone https://github.com/kivy/kivy-ios.git安装kivy-ios

错误日志

2023-06-23 23:06:45.874539+1000 myappname[89840:3192006] Available orientation: KIVY_ORIENTATION=Portrait
2023-06-23 23:06:45.874682+1000 myappname[89840:3192006] Initializing python
<string>:1: DeprecationWarning: the imp module is deprecated in favour of importlib and slated for removal in Python 3.12; see the module's documentation for alternative uses
2023-06-23 23:06:46.043803+1000 myappname[89840:3192006] Running main.py: /Users/xxxx/Library/Developer/CoreSimulator/Devices/D942FE25-9538-4E1C-993C-9905F9B4E7EC/data/Containers/Bundle/Application/ABCEC6A7-2BCA-4E5F-A077-D1631BAEC3AD/myappname.app/YourApp/main.pyc
[INFO   ] [Logger      ] Record log in /Users/xxxx/Library/Developer/CoreSimulator/Devices/D942FE25-9538-4E1C-993C-9905F9B4E7EC/data/Containers/Data/Application/E0192F8C-4FE3-49D1-9459-17501C810541/Documents/.kivy/logs/kivy_23-06-23_1.txt
[INFO   ] [Kivy        ] v2.2.1
[INFO   ] [Kivy        ] Installed at "/Users/xxxx/Library/Developer/CoreSimulator/Devices/D942FE25-9538-4E1C-993C-9905F9B4E7EC/data/Containers/Bundle/Application/ABCEC6A7-2BCA-4E5F-A077-D1631BAEC3AD/myappname.app/lib/python3.10/site-packages/kivy/__init__.py"
[INFO   ] [Python      ] v3.10.10 (main, Jun 21 2023, 13:10:16) [Clang 14.0.0 (clang-1400.0.29.202)]
[INFO   ] [Python      ] Interpreter at "/Users/xxxx/Library/Developer/CoreSimulator/Devices/D942FE25-9538-4E1C-993C-9905F9B4E7EC/data/Containers/Bundle/Application/ABCEC6A7-2BCA-4E5F-A077-D1631BAEC3AD/myappname.app/myappname"
[INFO   ] [Logger      ] Purge log fired. Processing...
[INFO   ] [Logger      ] Purge finished!
 Traceback (most recent call last):
   File "<string>", line 45, in load_module
   File "/Users/xxxx/myappnameApp/kivy-ios/dist/root/python3/lib/python3.10/imp.py", line 343, in load_dynamic
   File "<frozen importlib._bootstrap>", line 719, in _load
   File "<frozen importlib._bootstrap>", line 674, in _load_unlocked
   File "<frozen importlib._bootstrap>", line 571, in module_from_spec
   File "<frozen importlib._bootstrap_external>", line 1176, in create_module
   File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
 ImportError: dynamic module does not define module export function (PyInit_kivy__event)
 
 During handling of the above exception, another exception occurred:
 
 Traceback (most recent call last):
   File "/Users/xxxx/myappnameApp/kivy-ios/myappname-ios/YourApp/main.py", line 1, in <module>
   File "/Users/xxxx/Library/Developer/CoreSimulator/Devices/D942FE25-9538-4E1C-993C-9905F9B4E7EC/data/Containers/Bundle/Application/ABCEC6A7-2BCA-4E5F-A077-D1631BAEC3AD/myappname.app/lib/python3.10/site-packages/kivy/uix/screenmanager.py", line 195, in <module>
     from kivy.event import EventDispatcher
   File "/Users/xxxx/Library/Developer/CoreSimulator/Devices/D942FE25-9538-4E1C-993C-9905F9B4E7EC/data/Containers/Bundle/Application/ABCEC6A7-2BCA-4E5F-A077-D1631BAEC3AD/myappname.app/lib/python3.10/site-packages/kivy/event.py", line 8, in <module>
     import kivy._event
   File "<string>", line 49, in load_module
   File "/Users/xxxx/myappnameApp/kivy-ios/dist/root/python3/lib/python3.10/imp.py", line 343, in load_dynamic
 ImportError: dynamic module does not define module export function (PyInit__event)
2023-06-23 23:06:46.220093+1000 myappname[89840:3192006] Application quit abnormally!
2023-06-23 23:06:46.232625+1000 myappname[89840:3192006] Leaving

原因分析

该错误属于版本兼容问题,核心诱因:

  1. Xcode14.2自带的Clang 14.0.0编译器与kivy-ios默认编译配置不兼容,导致Kivy的C扩展模块(如kivy.event)无法生成正确的Python模块导出符号(PyInit*)
  2. 日志显示运行时Kivy版本为2.2.1,但本地环境指定的是2.2.0,说明kivy-ios自动拉取了更高版本的Kivy,引发版本不一致

解决办法

1. 清理旧构建产物并重新初始化

cd kivy-ios
rm -rf dist build
python3 toolchain.py build kivy

2. 强制指定匹配的Kivy版本

构建时明确指定与本地环境一致的Kivy 2.2.0版本:

python3 toolchain.py build kivy==2.2.0

3. 适配Xcode14.2编译参数

修改kivy-ios的toolchain.py文件,在编译C扩展的参数列表中添加:

'-Wno-error=implicit-function-declaration',
'-Wno-error=incompatible-function-pointer-types'

添加后重新构建所有依赖:

python3 toolchain.py build all

4. 重新打包应用

打开Xcode项目,执行Product > Clean Build Folder清理缓存,选择iPhone14模拟器重新运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 10:37:03