1: 环境,ubuntu
1.1 rust : rust-1.79.0 (在官方下载linux版本后,解压文件夹,内部有个install的sh文件,可安装)
安装成功测试:cargo --version
1.2 python3.10 (直接使用apt install python 下载的)
1.3 libtorch 最新版本2.3.1 Start Locally | PyTorch
因为后续出现bug:
找不到tch 1.8.0 , 所以重新下载历史版本
历史版本下载: https://download.pytorch.org/libtorch/cpu/
2: 配置
libtorch 环境变量配置: 使用的 GitHub - LaurentMazare/tch-rs: Rust bindings for the C++ api of PyTorch.
注意解压文件夹和配置的地址保持一致。
最后修改 ~/.bashrc 后 记得要 source ~/.bashrc
3: 测试
3.1 创建一新项目
cargo new demo1
3.2 进入demo1 直接运行
cargo run
3.3 运行成功 ,开始关联libtorch测试,进入到src下修改main.rs
use tch::Tensor;
fn main() {
let t = Tensor::from_slice(&[3, 1, 4, 1, 5]);
let t = t * 2;
t.print();
}
这里主要是为了测试tch有没有成功引进,这个时候在运行 cargo run 会报错 找不到tch
3.4 修改Cargo.Toml ,添加tch 依赖, 这个相当于清单文件
4: 本文使用2.0.0的libtorch tch= 0.15.0 ,tch版本和libtorch版本对比,可以根据下面的来
Previous PyTorch Versions | PyTorch
tch 0.16.0 - Docs.rs
如果版本不对,他会提示:
根据提示去调整版本
5: bugs
解决:
rm ~/.cargo/.package-cache
卡住在99,运行的时候使用 , 如果你是2核,下面写1,如果是4核,最高可以写3,防止cpu拉满导致编译一直卡住,这里会需要很长时间。。我用了2个多小时最终才完成编译
CARGO_BUILD_JOBS=2 cargo build
6: rust和python 互调
6.1 python 里使用rust
按照GitHub - PyO3/pyo3: Rust bindings for the Python interpreter 配置maturin
注意事项,因为当前环境装的python3
最后通过指令就可以访问你在rust文件里写的方法
6.2 在rust内访问python文件 Executing existing Python code - PyO3 user guide
按照官方说明填写python文件,
打印结果: