mac安装rust的pyo3模块
2024-08-26 10:16:37
Rust 发布的工具链包括了 stable、beta 和 nightly 三种不同版本。 nightly 是最激进的版本,包含了大量(可能不稳定)的新/高级特性。stable 版本目前可能还不支持一些高级特性。beta 介于两者之间。
我们首先安装nightly版本
rustup install nightly
如果安装过就更新
rustup update nightly
切换到nightly
rustup default nightly
版本查看
rustc 1.41.0-nightly (412f43ac5 2019-11-24)
mac需要配置
在文件夹.cargo创建config文件
cd ~/.cargo
touch config
subl config
输入下面内容
[target.x86_64-apple-darwin]
rustflags = [
"-C", "link-arg=-undefined",
"-C", "link-arg=dynamic_lookup",
]
创建项目
cargo +nightly new pyo3demo
执行上面的命令之后会创建一个pyo3demo文件夹,该文件夹里包含一个Cargo.toml配置文件和src文件夹。
所有要用cargo管理的必须有Cargo.toml文件,而且必须是这个名字,而且首字母必须大写。
Cargo.toml内容如下
[package]
name = "r2p"
version = "0.1.0"
edition = "2018"
[lib]
name = "r2p"
crate-type = ["cdylib"]
[dependencies.pyo3]
version = "0.8.3"
features = ["extension-module"]
然后src文件下面创建lib.rs。内容如下:
use pyo3::prelude::*;
use std::f64::consts::PI;
use pyo3::wrap_pyfunction;
#[pyfunction]
fn hello() -> PyResult<()> {
println!("公众号:Python学习开发");
Ok(())
}
#[pyfunction]
fn pi_times( n: usize ) -> PyResult<Vec<f64>> {
Ok(
(0..n).map(|i| i as f64 * PI).collect()
)
}
#[pymodule]
fn r2p(_py: Python, m: &PyModule) -> PyResult<()> {
m.add_wrapped(wrap_pyfunction!( hello ))?;
m.add_wrapped(wrap_pyfunction!( pi_times ))?;
Ok(())
}
返回项目根目录编译
cargo +nightly build --release
如果执行成功,会生成一个target文件夹,进入target还有个release文件。
发现文件libr2p.dylib,将其拷贝到项目根目录,然后重命名为r2p.so。
到目前为止rust这边的工作就都做完了。
下面是python这边的
打开python3
import r2p
r2p.hello()
得到结果如下
最新文章
- jQuery技巧大放送
- canvas :曲线的面积图 加渐变效果
- 提高C#代码质量-规范
- shell中命令之间数据的传递
- 《BI那点儿事》数据流转换——派生列
- 在dos中运行java程序,若出现Exception in thread “main"; java.lang.NoClassDefFoundError
- Puppet&#39;s Architecture 3.7
- 学习笔记--Grunt、安装、图文详解
- 【Hadoop代码笔记】Hadoop作业提交之Child启动map任务
- When Colon Scripting is comming
- ES5严格模式
- oracle数据库的一次异常起停处理。
- #021 Java复习第一天
- 父进程结束,其子进程不会结束,会挂到init进程下
- poj 1269
- 【转】Windows Live Writer 代码插件改造
- [Unity动画]03.动画事件
- 安卓个性化 Button
- 开发之道——读《移山之道——VSTS开发之道》后感
- Material Design系列第三篇——Using the Material Theme
热门文章
- Java 解决Emoji表情过滤问题(转载)
- 用python执行 js代码__来自脚本之家
- error 106: Can&#39;t Access ASP.NET\ClientFiles\
- asp.net core 读取Appsettings.json 配置文件
- istio-1.1.6镜像列表
- 小程序框架之视图层 View
- 零基础Python教程-函数及模块的使用
- python开发基础-Pycharm快捷键
- javaweb-servlet获取给定文件在服务器上的绝对路径的方法
- 基于 Redis 实现简单的分布式锁