rust python 混合编程注意点

rust可以使用pyo3写python 扩展,同时使用maturin编译发布. 以本人mongo_emb为例子,把踩坑中的注意点记录如下:

  • 关于项目结构 :

    • 参见 项目链接 https://github.com/wangmarkqi/mongo_emb
    • 注意mongo_emb文件夹下core.py 的import from .mongo_emb import PyDatabase, PyCollection 这里的.mongo_emb是cargo的libname,通过这个import是的py和rust发生了关系. 可以想象cargo build后这个文件夹下产生了一个.pyd的py拓展库.
    • init.py 暴露了整个库的模块,内部的rust模块在core.py 使用
  • 关于交叉编译:

    • maturin build 仅仅编译源代码包和本地适配whl
    • cago.toml中间的pyo3 = { version = “0.27.1”, features = [“abi3-py38”,“extension-module”, “auto-initialize”] }, abi3保证whl不受到py版本限制.
    • 以win为例,以下方法可以编译出linux版本
 rustup target add x86_64-unknown-linux-gnu    
 pip install ziglang   
 maturin build --release  --target  x86_64-unknown-linux-gnu --zig
  • 关于发布
    • maturin publish仅仅发布源代码和本地适配
    • 采用交叉编译把结果拷贝到dist,然后 twine upload dist/* 可以上传交叉编译结果
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值