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

如何通过PythonKit在SwiftUI中导入Python模块并调用自定义Python脚本?

问题排查与解决步骤
  • 修正Python模块导入语法
    调用Python.import()时不需要加.py后缀,把原有代码改成let main = Python.import("main")即可,带后缀会导致Python找不到对应模块直接抛出导入错误。
  • 对齐函数参数与类型
    你在main.py中定义的func没有接收任何参数,但Swift调用时不仅传入了多余的symptoms变量,还错误使用了$符号($symptoms是SwiftUI的绑定类型,无法直接转换为Python可识别类型),参数数量、类型不匹配都会触发Python的运行时异常。要么修改Python函数定义为def func(symptoms):适配传入的参数,同时Swift侧调用时去掉$符号直接传symptoms,要么Swift调用时去掉多余参数。
  • 处理第三方依赖兼容问题
    PythonKit在iOS环境下运行时,使用的是内嵌的Python runtime,无法直接使用你在macOS本地pip安装的第三方包。googlesearch属于第三方网络请求库,本身没有做iOS端Python适配,直接调用会触发导入失败或者运行时崩溃。如果要实现谷歌搜索功能,更推荐直接在Swift侧使用URLRequest调用谷歌搜索的公开API,绕过Python侧的依赖问题。
  • 确认资源文件配置
    把main.py文件添加到Xcode项目的Copy Bundle Resources构建阶段中,确保应用打包时会把该脚本复制到应用 bundle 里,PythonKit才能正常读取到脚本文件。
  • 增加异常捕获定位具体问题
    可以在Swift调用Python函数的位置加异常捕获,避免直接崩溃同时打印具体错误信息:
Button(action:{
    do {
        // 按实际需求选择是否传参
        try main.func(symptoms as! PythonConvertible)
    } catch {
        print("调用Python函数出错:\(error)")
    }
}) {
    Image(systemName: "arrowtriangle.forward")
        .font(.largeTitle)
        .foregroundColor(.black)
        .position(x:200, y:-200)
}

内容的提问来源于stack exchange,提问作者sam c ou

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 19:09:02