使用 Python setuptools-rust 创建和安装 tar 包的完整指南
在 Python 生态系统中,若想将 Rust 编写的扩展模块打包并且方便地进行分发和安装,setuptools-rust
是一个非常有用的工具。本文将为你详细讲解如何使用 setuptools-rust
创建一个 tar 包,并实现安装。
流程概述
我们将按照以下步骤进行操作:
步骤 | 描述 |
---|---|
1 | 准备 Rust 和 Python 开发环境 |
2 | 创建 Rust 项目 |
3 | 编写 Rust 扩展模块 |
4 | 使用 setuptools-rust 配置包 |
5 | 生成 tar 包 |
6 | 安装 tar 包 |
详细步骤
1. 准备 Rust 和 Python 开发环境
确保你在你的机器上已经安装了 Rust 和 Python。可以使用以下命令检查安装情况:
# 检查 Python 版本
python --version
# 检查 Rust 版本
rustc --version
如果没有安装,可以前往 [Python 官网]( 和 [Rust 官网]( 安装。
2. 创建 Rust 项目
使用 Cargo 创建 Rust 项目。打开终端,执行:
cargo new my_rust_extension
cd my_rust_extension
这里 my_rust_extension
是你将要创建的 Rust 项目名。
3. 编写 Rust 扩展模块
在 src/lib.rs
文件中,添加简单的 Rust 代码,例如:
// src/lib.rs
#[no_mangle] // 不要对函数名进行名词修饰
pub extern "C" fn add(a: i32, b: i32) -> i32 {
a + b
}
4. 使用 setuptools-rust 配置包
首先,在项目根目录下创建 setup.py
文件,用于配置打包内容。内容如下:
# setup.py
from setuptools import setup
from setuptools_rust import RustExtension
setup(
name="my_rust_extension",
version="0.1.0",
rust_extensions=[RustExtension("my_rust_extension.my_rust_extension", "Cargo.toml")],
zip_safe=False,
)
这部分代码的解释:
name
和version
设置包的名称及版本。rust_extensions
用于指定 Rust 扩展模块的位置及其配置文件Cargo.toml
。
接下来,你需要创建一个 Cargo.toml
文件,其内容如下:
# Cargo.toml
[package]
name = "my_rust_extension"
version = "0.1.0"
edition = "2018"
[lib]
crate-type = ["cdylib"] # 设置为动态库
5. 生成 tar 包
在项目的根目录执行以下命令生成 tar 包:
#确保在项目根目录
python setup.py sdist
这将会在 dist
目录中生成一个压缩包,例如 my_rust_extension-0.1.0.tar.gz
。
6. 安装 tar 包
可以使用以下命令安装生成的 tar 包:
# 确保在项目根目录
pip install dist/my_rust_extension-0.1.0.tar.gz
结束语
通过以上简单的步骤,你成功地使用 setuptools-rust
创建和安装了一个包含 Rust 扩展模块的 tar 包。这种方法不仅能加快开发效率,还能充分利用 Rust 高效的性能。希望你能够在未来的项目中灵活运用这些工具,深入探索 Python 与 Rust 的结合。