rust cpython,是否有任何python环境的设置要做?



我将遵循这个示例,将用Rust编写的函数导入到python应用程序中:https://depth-first.com/articles/2022/03/09/python-extensions-in-pure-rust-with-rust-cpython/

输出为'libfunction '。我应该将其重命名为'function '。so',将其移动到python app.py所在的文件夹中,然后我应该能够在python中导入它(假设模块只是暴露了一个名为greet的函数):

from function import greet

是否有一些python环境的设置,我错过了?即使我完全使用本文链接的存储库,python也找不到模块(检查了10次名称拼写正确,文件是否在正确的文件夹中等):

ModuleNotFoundError: No module named function

货物。汤姆将是

[package]
name = "function"
version = "0.1.0"
edition = "2021"
[lib]
crate-type = ["cdylib"]
[dependencies]
cpython = "0.7"
[features]
default = ["python3"]
python3 = ["cpython/python3-sys", "cpython/extension-module"]

lib.rs:

use cpython::{py_module_initializer, py_fn, PyResult, Python};
fn greet(_: Python, name: String) -> PyResult<String> {
Ok(format!("Hello, {}!", name))
}
py_module_initializer! {
function, |py, module| {
module.add(py, "greet", py_fn!(py, greet(string: String)))?;
Ok(())
}
}

根据本期建议,py_module_initializer!{function, ...}宏生成一个名为PyInit_function的模块导出函数,共享对象名称必须与之匹配。将libfunction.so重命名为function.so,并像这样导入:

from function import greet

最新更新