使用 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,
)

这部分代码的解释:

  • nameversion 设置包的名称及版本。
  • 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 的结合。