欢迎访问我的个人网站,网站正在创建期间,主要供自己学习交流使用!
你尚未登录,本站大部分内容将无法访问!
用rust编写Python模块
首先,确保你安装了Rust的编译工具链和Python的开发库。
安装Rust编译工具链(如果还没有的话):
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
设置环境变量(在命令行中执行):
source $HOME/.cargo/env
创建一个新的Rust库项目:
cargo new --lib python_rust_extension
编辑
Cargo.toml
文件,添加Python的绑定:[lib] name = "python_rust_extension" crate-type = ["cdylib"] [dependencies] pyo3 = "0.14.3"
编辑
src/lib.rs
文件,添加Python可以调用的函数:use pyo3::prelude::*; /// 定义我们的Rust函数 #[pyfunction] fn hello_world() -> PyResult<()> { println!("Hello, Python!"); Ok(()) } /// 这个宏将函数暴露给Python #[pymodule] fn python_rust_extension(_py: Python, m: &PyModule) -> PyResult<()> { m.add_function(wrap_pyfunction!(hello_world, m)?)?; Ok(()) }
编译Rust库为Python模块:
cargo build --release
这将在
target/release/
目录下生成一个.dll
文件(在Windows上),或者.so
文件(在Linux或macOS上)。在Python中使用编译好的模块:
首先,确保将生成的
.dll
或.so
文件放在Python可以找到的地方,比如Python的site-packages
目录,或者将其路径添加到环境变量PYTHONPATH
中。然后,您可以尝试在Python中导入并使用这个模块:
import python_rust_extension python_rust_extension.hello_world()
这个例子中的Rust代码定义了一个简单的函数hello_world
,然后通过PyO3暴露给Python。在Python中,你可以像调用普通Python函数一样调用这个函数。
湘公网安备43012102001039
湘ICP备14007447号-1 邮箱:35744243#qq.com