python通过rust编写组件扩展自己的能力

发布时间:2026/11/3 7:56:47

python通过rust编写组件扩展自己的能力 PyO3 Maturin 完整安装与使用手册一、基础项目信息1.1 PyO3 核心信息表格项目内容GitHub 地址https://github.com/PyO3/pyo3官方文档https://pyo3.rs开源协议MIT / Apache-2.0 双协议支持免费商用稳定版本0.23.xPython 支持Python 3.8兼容 CPython、PyPy、GraalPy配套构建工具maturin官方推荐1.2 Maturin 核心信息maturin 为 PyO3 配套构建工具用于将 Rust 代码编译为 Python 可直接安装的.whl包表格项目内容GitHub 地址https://github.com/PyO3/maturin官方文档https://www.maturin.rs最新版本1.12.22026 年 3 月发布开源协议Apache-2.0 / MIT 双协议二、前置环境安装2.1 安装 Rust 工具链bash运行# 一键安装 rustup、rustc、cargo curl --proto https --tlsv1.2 -sSf https://sh.rustup.rs | sh安装完成后重启终端验证安装bash运行rustc --version cargo --version2.2 安装 maturin三选一uv 方案推荐bash运行# 方案1uv 安装推荐适配 uv 项目工作流 uv tool install maturin # 方案2pipx 安装 pipx install maturin # 方案3原生 pip 安装 pip install maturin验证 maturin 是否生效bash运行maturin --version三、完整项目开发流程3.1 创建 PyO3 混合项目bash运行# 新建项目 my_fast_tool maturin new my_fast_tool cd my_fast_tool自动生成目录结构plaintextmy_fast_tool/ ├── Cargo.toml # Rust 依赖配置 ├── pyproject.toml # Python 打包规范配置 └── src/ └── lib.rs # Rust 核心代码Python 导出逻辑3.2 编写 Rust 导出代码src/lib.rsrust运行use pyo3::prelude::*; // 标记函数可暴露至 Python #[pyfunction] fn fast_calculate(numbers: Veci64) - i64 { numbers.iter().sum() } // 模块入口注册所有导出函数 #[pymodule] fn my_fast_tool(m: Bound_, PyModule) - PyResult() { m.add_function(wrap_pyfunction!(fast_calculate, m)?)?; Ok(()) }3.3 编译项目两种模式模式 1开发调试热加载推荐日常迭代编译后自动安装至当前虚拟环境修改代码无需手动重装bash运行maturin develop模式 2生产打包生成 whl 安装包bash运行maturin build --release产物输出目录target/wheels/3.4 使用 uv 安装编译后的 whl 包bash运行# 写入项目依赖更新 pyproject.toml uv add ./target/wheels/my_fast_tool-0.1.0-cp312-cp312-linux_x86_64.whl # 仅安装至虚拟环境不修改项目配置 uv pip install ./target/wheels/my_fast_tool-0.1.0-cp312-cp312-linux_x86_64.whl3.5 Python 调用 Rust 代码python运行import my_fast_tool res my_fast_tool.fast_calculate([1, 2, 3, 4, 5]) print(res) # 输出 15四、发布至 PyPI可选方式 1maturin 一键发布bash运行maturin publish方式 2maturin 打包 uv 发布bash运行# 先构建 release 包 maturin build --release # 使用 uv 上传至 PyPI uv publish五、整体流程总结plaintext安装 Rust maturin ↓ maturin new 创建混合项目 ↓ 编写 src/lib.rs Rust 业务代码 ↓ maturin develop 本地调试 或 maturin build --release 生成 whl 包 ↓ uv add / uv pip install 安装编译包 ↓ Python import 直接调用 Rust 高性能函数
延伸阅读

更多相关文章

2026/10/30 16:26:01

VITURE Auto Immersive 3D:安卓实时2D转3D技术实践指南

这次我们来看一个很有意思的技术发布——VITURE 推出的 Auto Immersive 3D 技术。这个技术最核心的价值在于,它能让普通的安卓系统实时实现 3D 立体化效果,不需要依赖特殊的硬件或复杂的开发流程。如果你关心移动端 3D 渲染、AR/VR 应用开发,…

2026/11/1 14:48:40

CodeGraph技术解析:代码知识图谱与开发效率提升

1. CodeGraph技术解析:如何实现70%工具调用削减CodeGraph本质上是一个本地化的代码知识图谱引擎,它通过静态分析构建项目的语义网络。与传统的文本搜索工具不同,CodeGraph将代码库中的符号(函数、类、方法等)及其关系&…

2026/11/3 7:55:16

基于LSTM的股票预测系统开发与量化分析实践

1. 项目概述与核心价值这个股票行情分析与预测系统是我在金融科技领域深耕多年后的一次实践总结。不同于市面上简单的行情展示工具,我们构建的是一个集数据采集、技术分析、基本面评估和AI预测于一体的综合平台。核心解决三个痛点:一是散户获取结构化数据…

2026/11/3 7:55:16

Stable Diffusion WebUI入门指南:从安装部署到参数调优与避坑实践

1. 先把"WebUI"这件事彻底讲清楚1.1 从命令行到图形界面的那一步Stable Diffusion 最早是开源的 Python 项目,我刚开始接触它的时候,面对的是一大段终端命令。你要先手动下载权重文件、配置 Python 环境、用命令行传参数生成图片。对只写了几年…

2026/11/3 7:55:16

Matlab imfuse 图像融合:分割精度测试的可视化实战指南

图像分割做完之后,怎么证明分割结果是对的、精度到底够不够,这是很多人卡住的地方。我见过不少做分割的朋友,模型跑完、掩膜生成,然后对着屏幕肉眼看一眼觉得"差不多",就交差了。真到要写报告、做对比、调参…

2026/11/3 7:55:16

AI管家赛道全解析:从OpenClaw到同类型项目选型与部署实践

OpenClaw 最近在技术社区里确实火得一塌糊涂,好多朋友私信问我:除了 OpenClaw,还有哪些同类 AI 管家可以玩?这个问题问到了点子上。AI 管家跟聊天机器人是两回事,聊天的尽头是对话,管家的尽头是执行。一个合…

2026/11/3 7:55:16

GitHub周报:代码评审、智能体与写作工具的认知负荷解法

打开GitHub Trending的时候,我发现这周(2026年第38周)的情况跟往常不太一样。往年这时候榜单上通常是一堆“更好用的脚手架”“更快的前端框架”,但这周排在前面的是四个和“让人舒服地工作”有关的项目:阿里云效开源的…

2026/11/3 7:50:16

ARS_40X毫米波雷达ROS驱动开发:CAN帧解析与话题封装实战

简介:该资源面向自动驾驶、机器人导航及环境感知方向的ROS开发者,提供Continental ARS_404与ARS_408毫米波雷达的驱动与ROS封装,支持Noetic与Melodic版本,帮助开发者无需深入底层CAN协议即可完成雷达数据接入。压缩包共47个文件&a…

2026/11/3 7:47:06

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/2 6:39:12

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/3 1:04:48

STM32实战:基于MAX14431数字隔离器的SPI隔离通信方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/3 1:04:48

工业SPI隔离通信设计:MAX14431BAEE+与STM32L4A6RG实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/3 1:04:48

STM32+NRF24L01无线抢答器:硬件设计、通信协议与低功耗实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/3 7:47:06

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/2 6:39:12

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑