我正在寻找有关如何构造一个Python包的信息,该包封装了一个用Rust编写的扩展模块,这两种语言是混合的。我正在使用pyO3作为FFI,但似乎找不到一个例子来说明如何做到这一点。 具体地说:我的rust库公开了一个类型,该类型稍后由python类包装。 只有python类应该向以后的用户公开,并且包应该是结构化的,这样就可以将它推送到PyPI
例如:
生锈的一面
#[pyclass]
pub struct Point {
x: f64,
y: f64
}
#[pymethods]
impl Point {
#[new]
pub fn new(x: f64, y: f64) -> Self { Self{x, y} }
}
在python方面
from ??? import Point
class Points:
points: List[Point]
def __init__(self, points: List[Tuple[float, float]]):
self.points = []
for point in points:
x, y = point
self.points.append(Point(x, y))
我将感谢任何信息,来源,例子等
我找到了一种使用Durin的方法。 所以,如果有人想知道怎么做,这里有一个方法
项目需要具有以下结构:
Cargo.toml可以是:
lib.rs的一个例子是:
现在在sum.py中,可以访问函数(在开发期间使用
maturin develop
之后,以及在maturin build
之后自动发布时):例如,uinit upy.py文件只能公开Sum类:
相关问题 更多 >
编程相关推荐