-
命令行创建一个新的Rust项目
cargo new --lib rust_python_ext -
配置
Cargo.tomltoml[package] name = "rust_python_ext" version = "0.1.0" edition = "2024" [lib] name = "rust_python_ext" crate-type = ["cdylib"] [dependencies] pyo3 = { version = "0.20.0", features = ["extension-module", "macros"] } -
编辑
src/lib.rs文件rust#![allow(unsafe_op_in_unsafe_fn)] use pyo3::prelude::*; #[pyfunction] // 定义一个Python可调用的函数 // i32: 32位整数 fn add(a: i32, b: i32) -> i32 { a + b } // 重点:函数名必须和 .pyd 文件名一致(这里是 `rust_python_ext`) #[pymodule] // 定义一个Python模块 // 模块初始化函数,接收Python解释器实例和模块对象,且名字必须与项目名一致 // _py:Python解释器实例(下划线表示未使用) // m:表示初始化的模块对象 // &表示不可变引用 // PyResult<()> 表示一个可能返回Python异常或成功的操作结果 fn rust_python_ext(_py: Python, m: &PyModule) -> PyResult<()> { m.add_function(wrap_pyfunction!(add, m)?)?; // ?用于错误处理 Ok(()) // 返回成功结果,表示模块初始化成功 } -
命令行测试Python安装成功,
python --version,pyo3 0.20.0支持的python版本为3.7-3.11 -
命令行构建
cargo build --release -
在
target/release找到rust_python_ext.dll,复制到Python项目中,将后缀改为.pyd -
保证
rust_python_ext.pyd和调用的py文件在同一目录下,在其中调用pythonimport rust_python_ext print(rust_python_ext.add(1,2))
Rust学习日记:编写一个Python扩展
m0_521118232025-04-06 16:26
相关推荐
打工仔折腾 AI2 分钟前
鸿蒙版ToDesk远控实测:蓝牙键鼠、双模式鼠标与跨端剪贴板怎么用启观川3 分钟前
数据结构与算法 -第 3 章 常用算法-回溯算法计算机编程指导师13 分钟前
Python毕设怎么做?基于hadoop的商家优惠券营销效果数据分析与可视化系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习计算机编程指导师17 分钟前
【Python毕设推荐】基于Hadoop+Spark的商场商铺运行数据分析与可视化系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习haluhalu.21 分钟前
Agent = LLM + 上下文 + 工具(含观察 / 动作空间、ReAct 循环)mldong22 分钟前
给 Django Admin 加审批流:一行前端代码没写,298 行接上工作流引擎kobe_OKOK_7 小时前
__getattr__和__getattribute__如何用全栈弄潮儿8 小时前
Python实战第2期: 变量与数据类型长沙三为智能科技9 小时前
家政小程序门店运营模块设计:会员、下单、派单、结算四段链路的落地拆解Cc.Y9 小时前
Java零基础入门:可变字符串与包装类:StringBuilder、StringBuffer 与 通讯录管理系统实战