maturin-action 开源项目教程
项目介绍
maturin-action
是一个 GitHub Action,用于安装和运行自定义的 maturin
命令,并内置支持跨平台编译。maturin
是一个用于构建和发布 Python 扩展模块的工具,特别适用于使用 Rust 编写的 Python 扩展。
项目快速启动
安装和使用
-
克隆项目仓库:
git clone https://github.com/PyO3/maturin-action.git cd maturin-action
-
创建 GitHub Actions 工作流: 在项目根目录下创建
.github/workflows/ci.yml
文件,并添加以下内容:name: CI on: [push] jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Set up Python uses: actions/setup-python@v2 with: python-version: '3.8' - name: Install dependencies run: | python -m pip install --upgrade pip pip install maturin - name: Build and test with maturin uses: PyO3/maturin-action@v1 with: command: build args: --release
-
提交并推送更改:
git add .github/workflows/ci.yml git commit -m "Add GitHub Actions workflow" git push
应用案例和最佳实践
案例一:构建和发布 Python 扩展模块
假设你有一个使用 Rust 编写的 Python 扩展模块,你可以使用 maturin-action
来自动化构建和发布过程。以下是一个示例:
-
创建 Rust 项目:
cargo new --lib my_extension cd my_extension
-
添加
pyo3
依赖: 在Cargo.toml
文件中添加以下内容:[lib] name = "my_extension" crate-type = ["cdylib"] [dependencies] pyo3 = { version = "0.14", features = ["extension-module"] }
-
编写 Rust 代码: 在
src/lib.rs
文件中添加以下内容:use pyo3::prelude::*; #[pyfunction] fn add(a: i32, b: i32) -> i32 { a + b } #[pymodule] fn my_extension(_py: Python, m: &PyModule) -> PyResult<()> { m.add_function(wrap_pyfunction!(add, m)?)?; Ok(()) }
-
配置 GitHub Actions: 在
.github/workflows/ci.yml
文件中添加以下内容:name: CI on: [push] jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Set up Python uses: actions/setup-python@v2 with: python-version: '3.8' - name: Install dependencies run: | python -m pip install --upgrade pip pip install maturin - name: Build and test with maturin uses: PyO3/maturin-action@v1 with: command: build args: --release
最佳实践
- 使用稳定的版本:始终使用最新的稳定版本
maturin-action
,以确保兼容性和安全性。 - 跨平台编译:利用
maturin-action
的内置跨平台编译支持,确保你的 Python 扩展模块可以在多种操作系统和架构上运行。 - 自动化测试:在 GitHub Actions 工作流中添加自动化测试步骤,确保每次提交都能通过测试。