第2章:开发环境搭建

说实话,每次开始一个新项目,我最头疼的就是环境配置。明明代码逻辑都理清了,结果卡在「装不上」三个字上,特别憋屈。Rust 和 Python 的混合开发更是如此——两边工具链都得伺候好。

这一章,咱们就把环境彻底搞定。我带你一步步走,保证不踩坑。

2.1 安装 Rust 工具链

Rust 的安装其实很简单。官方推荐用 rustup,这是个版本管理工具,类似 Python 的 pyenv。

打开终端,执行下面这行命令:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

安装过程中会问你几个选项。我个人习惯选默认(default),省心。安装完成后,重启终端,验证一下:

rustc --version
cargo --version

如果看到版本号,说明 Rust 装好了。嗯,这里要注意:千万别用系统包管理器(比如 apt、brew)装 Rust,版本太旧,后面 PyO3 会报错。我吃过这个亏。

小提示: 如果你在 Windows 上,记得先装 Visual Studio 的 C++ 构建工具。Rust 的某些依赖需要它。去 官网 下载「Build Tools for Visual Studio」就行。

2.2 安装 Python 虚拟环境

Python 这边,我强烈建议用虚拟环境。为什么?你想想看,不同项目依赖的包版本可能冲突,混在一起迟早出事。

我个人偏爱 venv,它是 Python 3.3+ 自带的,不用额外装。创建虚拟环境很简单:

python3 -m venv rust_py_env

激活它:

  • Linux/macOS: source rust_py_env/bin/activate
  • Windows: rust_py_env\Scripts\activate

激活后,终端前面会出现 (rust_py_env) 字样。这时候你装的所有包,都只在这个环境里生效。

注意: 别用 pip install --user 装包到全局。我曾经这么干过,结果两个项目依赖的 numpy 版本打架,折腾了一下午才解决。虚拟环境就是用来隔离这些麻烦的。

2.3 配置 Cargo 与 PyO3 依赖

现在进入正题。我们要创建一个 Rust 项目,并引入 PyO3 库。PyO3 是 Rust 和 Python 之间的桥梁——说白了,它让 Rust 代码能被 Python 直接调用。

先创建一个新的 Rust 库项目:

cargo new --lib rust_py_hello
cd rust_py_hello

然后编辑 Cargo.toml 文件,加入 PyO3 依赖:

[package]
name = "rust_py_hello"
version = "0.1.0"
edition = "2021"

[lib]
crate-type = ["cdylib"]

[dependencies]
pyo3 = { version = "0.20", features = ["extension-module"] }

这里 crate-type = ["cdylib"] 是关键。它告诉 Rust 编译器:我们要生成一个动态链接库(.so 或 .dll),Python 才能加载它。没有这行,PyO3 没法工作。

接下来,在 src/lib.rs 里写一个简单的函数:

use pyo3::prelude::*;

#[pyfunction]
fn greet(name: &str) -> String {
    format!("Hello, {}! 来自 Rust 的问候。", name)
}

#[pymodule]
fn rust_py_hello(_py: Python, m: &PyModule) -> PyResult<()> {
    m.add_function(wrap_pyfunction!(greet, m)?)?;
    Ok(())
}

这段代码做了三件事:

  • #[pyfunction] 标记一个函数,告诉 PyO3「这个函数要暴露给 Python」
  • #[pymodule] 定义一个 Python 模块
  • 把函数注册到模块里

编译一下:

cargo build --release

编译成功后,你会在 target/release/ 目录下看到一个 librust_py_hello.so(Windows 上是 .pyd)。这就是我们要的产物。

2.4 验证 Hello World

最后一步,验证整个链路是否通畅。回到 Python 虚拟环境,把编译好的动态库复制到当前目录:

cp target/release/librust_py_hello.so .

然后写一个简单的 Python 脚本 test.py

import rust_py_hello

result = rust_py_hello.greet("世界")
print(result)

运行它:

python test.py

如果看到输出:

Hello, 世界! 来自 Rust 的问候。

恭喜你,环境搭建成功了!

核心要点: 整个流程其实就三步——装 Rust、建 Python 虚拟环境、用 PyO3 编译动态库。每一步都有坑,但按我上面的步骤走,基本不会出问题。

知识体系总览

下面这张图,帮你理清本章的核心逻辑:

开发环境搭建流程 Rust 工具链 Python 虚拟环境 PyO3 依赖配置 rustup 安装 cargo new 创建项目 python -m venv 激活虚拟环境 Cargo.toml 配置 cargo build --release ✅ 验证 Hello World

这张图展示了从零到 Hello World 的完整路径。三个分支并行推进,最后汇聚到验证环节。我在实际项目中,经常用这张图给新人做 onboarding,效果不错。


专注资料整理