mac安装rust的pyo3模块
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()
得到结果如下

mac安装rust的pyo3模块的更多相关文章
- mac安装apache的mod_wsgi模块
第一次用pip安装 ,最终不能使用,原因是系统自带的apache,python和新安装的冲突, 所以需要安装时需要指定apache,python路径 所以用make makeinstall方式 参考链 ...
- mac安装rust
1.安装 curl https://sh.rustup.rs -sSf | sh 使用brew各种出错,还慢. 2编译 source $HOME/.cargo/env 3.版本查看 rustc --v ...
- 在 mac 系统上安装 python 的 MySQLdb 模块
在 mac 系统上安装 python 的 MySQLdb 模块 特别说明:本文主要参考了Mac系统怎么安装MySQLdb(MySQL-Python) 第 1 步:下载 MySQL-python-1.2 ...
- mac下Apache添加限速模块mod_bw
官方文档: Apache2 - Mod_bw v0.7 Author : Ivan Barrera A. (Bruce) HomePage : Http://Ivn.cl/apache & h ...
- Mac安装python3.x+pycharm+elasticsearch+常见报错处理(1)
---恢复内容开始--- mac安装python有两种方式:此处叙述官网安装下载. mac 自带python2.x版本,python2和3之间的差距还是有的.下面简单叙述我安装python3.7的过程 ...
- Mac安装crfpp
Mac安装crfpp 步骤 git clone https://github.com/taku910/crfpp.git ./configure make sudo make install cd p ...
- Mac安装vue
Mac安装vue 一.安装brew 打开终端运行以下命令: /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com ...
- Mac安装python细节
前言 之前在windows平台上安装python直接用Anaconda,优点是所有的科学计算的库都整合进去了,安装方便.在Mac系统下,当然也可以直接安装Anaconda,但是考虑到Mac会自带pyt ...
- Mac安装vue.js开发环境
Mac安装vue.js开发环境 DannyHooDanny的专栏订阅 一.vue.js开发环境 二.初始化一个vue.js项目 三.vue.js项目打包部署 本来以为在Mac上搭建vue.js的环境挺 ...
随机推荐
- [React] 函数定义组件
函数定义组件的例子 function Welcome(props) { return <h1>Hello, {props.name}</h1>; } 该函数是一个有效的 Rea ...
- TP5配置隐藏入口index.php文件,Apache/phpstudy
一,找到/public/.htaccess文件,如果你的入口文件已经移动到根目录下,那么你的.htaccess文件也要剪切到根目录下,总之要确保.htaccess跟入口的index.php保持同级. ...
- CRM-Q模糊查询
Q查询-模糊查询 示例一 q=Q() # 实例化一个Q的对象q,我们可以给它加条件 q.children.append(("name","xxx")) # 添加 ...
- Flask统计代码行数
流程: 1.获取前端的文件 2.判断文件是否zip文件 3.解压压缩包并保存 4.遍历解压后的文件夹 5.判断文件是否py文件,将绝对路径添加到列表 6.循环列表,排除注释和空号,统计行数 from ...
- angularcli 第三篇(数据循环*ngFor、条件判断*ngIf)
1.数据循环 *ngFor (1)普通循环 <ul> <li *ngFor = "let item of list" > {{ item }} </l ...
- TODO的作用及如何使用
https://blog.csdn.net/jerry11112/article/details/82966142 文章标题:[C#]TODO的作用 可以方便后续找到要做的功能点.
- springboot 运行jar 跳转jsp页面
pom.xml 添加 <!-- tomcat支持 --> <dependency> <groupId>org.springframework.boot</gr ...
- Multiple network matches found for name 'selfservice', use an ID to be more specific.报错
今天正在做openstack实例时输入neutron subnet-create --name selfservice --dns-nameserver 114.114.114.114 --gat ...
- Vue创建组件的三种方式
1.使用 Vue.extend 来创建全局的Vue组件 <div id="app"> <!-- 如果要使用组件,直接,把组件的名称,以 HTML 标签的形式,引入 ...
- 微信扫描二维码跳转手机默认浏览器打开下载app的链接是怎么实现的
此方法可以实现微信内置浏览器跳转到手机其它浏览器,现在网上其它的方法都只是一个页面,让访问者自己手动点右上角浏览器打开,而这个不同,是可以直接自动跳转的. <?php error_reporti ...