mac安装rust的pyo3模块

摘要:
Rust发布的工具链包括了stable、beta和nightly三种不同版本。stable版本目前可能还不支持一些高级特性。我们首先安装nightly版本rustupinstallnightly如果安装过就更新rustupupdatenightly切换到nightlyrustupdefaultnightly版本查看rustc1.41.0-nightlymac需要配置在文件夹.cargo创建config文件cd~/.cargotouchconfigsublconfig输入下面内容[target.x86_64-apple-darwin]rustflags=["-C","link-arg=-undefined","-C","link-arg=dynamic_lookup",]创建项目cargo+nightlynewpyo3demo执行上面的命令之后会创建一个pyo3demo文件夹,该文件夹里包含一个Cargo.toml配置文件和src文件夹。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。发现文件libr2p.dylib,将其拷贝到项目根目录,然后重命名为r2p.so。到目前为止rust这边的工作就都做完了。

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模块第1张

免责声明:文章转载自《mac安装rust的pyo3模块》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇DelphiXE7 FMX 退出程序写法!限定登录失败次数,超过指定次数就限制登录一段时间下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

在Mac OS X 下配置Android NDK(配置环境变量)

系统:Mac OS X 10.8.3NDK版本:android-ndk-r8e和在Ubuntu下使用NDK相比,除了配置环境变量稍有区别外,基本都是一样的。1 . 下载NDK,地址:http://developer.android.com/tools/sdk/ndk/index.html2 . 解压,解压得到的文件夹可以移动到其他文件夹,接下来把它的路径加...

macos键盘映射修改

在windows下,我使用AutoHotkey (AHK)进行键盘映射,AHK不支持macos,所以重新选了一款软件,这款软件是Karabiner-Elements。 要把键位映射成什么样子? 如下图: 这样基本就可以实现在编辑东西的时候不需要使用鼠标了。 配置Karabiner-Elements vi方式的上下左右使用官网带的(Add rule->...

Mac配置环境变量

Mac配置环境变量 前言 以往的开发环境都是Win10,如今切换Mac之后,一些环境就不是一些界面能解决的了,这里简单做一个记录。 1. 关于mac的配置文件,这里引用我参考的一篇博客 Mac系统下的环境变量(权限嵌套排列,如同层叠样式表): a. /etc/profile b. /etc/paths c. ~/.bash_profile...

网络学习笔记----02--IGMP组播、ARP

IGMP组播 :在路由器的接口上运行,周期性扫描本网段是否有绑定某个多播地址的计算机。 ARP,全称Address Resolution Protoco,将广播中的IP地址解析成MAC地址 查看MAC地址 ,其中127是广播地址 可以通过arp -a 查看mac地址,防止arp欺骗...

在 macOS 中怎样获取当前文件夹的路径?

如果只是需要看一个文件的路径,右键 get info (cmd + i)可以看到。 另一种方便的方法是,打开 terminal,把文件拖进terminal 窗口,自动显示路径。 如果需要复制路径,在finder里,对选中的文件,cmd+opt+c,就复制到剪贴板了。...

网口扫盲二:Mac与Phy组成原理的简单分析

网口扫盲二:Mac与Phy组成原理的简单分析 1. general 下图是网口结构简图.网口由CPU、MAC和PHY三部分组成.DMA控制器通常属于CPU的一部分,用虚线放在这里是为了表示DMA控制器可能会参与到网口数据传输中. 对于上述的三部分,并不一定都是独立的芯片,根据组合形式,可分为下列几种类型: CPU集成MAC与PHY; CPU集成MAC...