这个项目能做什么

PyO3 是一个使 Rust 与 Python 之间实现无缝互操作的库。它允许开发者用 Rust 编写原生 Python 扩展模块,在利用 Rust 性能优势和安全内存管理的同时,保留 Python 的易用性。此外,它还支持在 Rust 应用程序中嵌入 Python 解释器,从而能够从 Rust 二进制程序中直接执行 Python 代码。 该库支持多种 Python 实现:CPython 3.9+、PyPy 7.3(Python 3.11+)以及 GraalPy 25.0+(Python 3.12+)。对于从 Rust 构建 Python 包,PyO3 与 maturin(推荐给初学者使用)和 setuptools-rust 等工具集成,简化了编译和分发流程。开发者也可以使用 Cargo 手动构建。 主要特性包括: - 通过 #[pyfunction] 和 #[pymodule] 等宏定义 Python 函数和模块。 - 通过 PyO3 的高级 API 从 Rust 访问 Python 对象、模块和内置函数。 - Rust 类型与 Python 类型(如整数、字符串、列表)之间的自动转换。 - 通过 pyo3-async-runtimes 支持 async/await 互操作性。 - 与流行 Python 库的集成,包括 NumPy(通过 rust-numpy)、Pandas(通过 delta-rs、polars)和 Arrow(通过 arro3、pyo3-arrow)。 PyO3 已被众多项目在生产环境中使用,包括 Polars(数据帧)、orjson(JSON 序列化)、tiktoken(OpenAI 模型的标记化)以及 River(在线机器学习)。它在注重速度和并发的 Python 应用中的性能关键组件领域得到了广泛应用。 官方文档包含完整的用户指南和 API 参考。项目通过 GitHub Issues、文档改进、功能开发以及 Discord 社区支持等方式欢迎贡献。PyO3 采用 Apache-2.0 和 MIT 双重许可。