#call #python #py #dll #print #pyo3

pyo2

从Python调用Rust代码的轻量级方法

3个版本

0.1.2 2024年7月16日
0.1.1 2024年7月16日
0.1.0 2024年7月16日

#3 in #py

Download history 277/week @ 2024-07-14 1/week @ 2024-07-21 42/week @ 2024-07-28

每月66次下载

MIT许可证

5KB
56

PyO2: 从Python调用Rust代码的轻量级方法

PyO3完全没有关联。你是在找这个吗?

用法

文件: Cargo.toml

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

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

[dependencies]
pyo2 = "0.1.0"

文件: src/lib.rs

use pyo2::{PyStr, PyVec};

#[no_mangle]
pub extern "C" fn test(name: &PyStr, numbers: &mut PyVec<i64>) {
    println!("Hello, {}!", unsafe { name.as_str_unchecked() });
    println!("Sum of numbers: {}", numbers.iter().cloned().sum::<i64>());
    numbers[0] = 6;
}

文件: test.py

from pyo2 import RustDLL

dll = RustDLL('./libmylib.so')

s = 'World'
lst = [1, 2, 3, 4, 5]
dll.test(s, lst)
print(lst)

输出

Hello, World!
Sum of numbers: 15
[6, 2, 3, 4, 5]

无运行时依赖