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

如何在Tauri中执行带参数的Python函数?Sidecars使用疑问

在Tauri框架中通过Sidecars执行带参数的Python函数

核心思路

借助Tauri的Sidecar机制调用Python脚本(或打包后的Python可执行文件),通过命令行参数传递数据,脚本处理完成后返回结果。


步骤1:配置Tauri项目

修改src-tauri/tauri.conf.json,添加Sidecar配置并开启对应权限:

{
  "tauri": {
    "bundle": {
      "externalBin": [
        "./src-tauri/bin/my_script" // 替换为你的Python可执行文件路径
      ]
    },
    "allowlist": {
      "shell": {
        "sidecar": true,
        "execute": true
      }
    }
  }
}

步骤2:编写带参数处理的Python脚本

创建my_script.py,接收命令行参数并执行目标函数:

import sys

def target_function(arg1, arg2):
    # 这里编写你的业务逻辑
    return f"处理结果:参数1={arg1}, 参数2={arg2}"

if __name__ == "__main__":
    # 检查参数数量是否足够
    if len(sys.argv) < 3:
        print("参数不足", file=sys.stderr)
        sys.exit(1)
    # 解析命令行传入的参数
    arg1 = sys.argv[1]
    arg2 = int(sys.argv[2])
    # 执行函数并输出结果(供Tauri读取)
    print(target_function(arg1, arg2))

步骤3:打包Python脚本为可执行文件(可选但推荐)

用pyinstaller将脚本打包成单文件(避免依赖用户系统的Python环境):

pyinstaller --onefile my_script.py

将生成的可执行文件(Windows为.exe,Linux/macOS为无后缀文件)放到src-tauri/bin目录下。

步骤4:在Rust中编写Sidecar调用逻辑

修改src-tauri/src/main.rs,注册Tauri命令并实现Sidecar调用:

use tauri::Manager;

#[tauri::command]
async fn call_python_func(arg1: &str, arg2: i32) -> Result<String, String> {
    // 初始化Sidecar
    let sidecar = tauri::api::process::Command::new_sidecar("my_script")
        .map_err(|e| format!("创建Sidecar失败:{}", e))?;
    
    // 传递参数并执行脚本
    let output = sidecar.args([arg1, &arg2.to_string()])
        .output()
        .await
        .map_err(|e| format!("执行Sidecar失败:{}", e))?;
    
    // 处理执行结果
    if output.status.success() {
        String::from_utf8(output.stdout)
            .map_err(|e| format!("输出解析失败:{}", e))
    } else {
        let err_msg = String::from_utf8(output.stderr).unwrap_or("未知错误".to_string());
        Err(format!("脚本执行失败:{}", err_msg))
    }
}

fn main() {
    tauri::Builder::default()
        .invoke_handler(tauri::generate_handler![call_python_func])
        .run(tauri::generate_context!())
        .expect("Tauri应用启动失败");
}

步骤5:前端调用Rust命令

在前端代码中通过Tauri API触发Python函数调用:

import { invoke } from '@tauri-apps/api/tauri';

async function triggerPythonFunc() {
    try {
        const result = await invoke('call_python_func', { arg1: "测试文本", arg2: 123 });
        console.log("Python返回结果:", result);
        // 这里可以添加结果的前端展示逻辑
    } catch (error) {
        console.error("调用失败:", error);
    }
}

内容的提问来源于stack exchange,提问作者CJ-Programmer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 23:06:06