欢迎访问我的个人网站,网站正在创建期间,主要供自己学习交流使用!

用rust编写Python模块



首先,确保你安装了Rust的编译工具链和Python的开发库。

  1. 安装Rust编译工具链(如果还没有的话):

    curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
  2. 设置环境变量(在命令行中执行):

    
    source $HOME/.cargo/env
  3. 创建一个新的Rust库项目:

    cargo new --lib python_rust_extension
  4. 编辑Cargo.toml文件,添加Python的绑定:

    [lib]
    name = "python_rust_extension"
    crate-type = ["cdylib"]
     
    [dependencies]
    pyo3 = "0.14.3"
  5. 编辑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(())
    }
  6. 编译Rust库为Python模块:

    cargo build --release

    这将在target/release/目录下生成一个.dll文件(在Windows上),或者.so文件(在Linux或macOS上)。

  7. 在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