rust 如何在pymodule中执行文件中的函数

dldeef67  于 2022-11-24  发布在  其他
关注(0)|答案(1)|浏览(119)

这是一个正式的py03示例。

Python::with_gil(|py| -> PyResult<Py<PyAny>> {
    let py_app = include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/app.py"));
    let app: Py<PyAny> = PyModule::from_code(py, py_app, "", "")?
        .getattr("test_function")?
        .into();
    app.call0(py)
})

我的本地app.py包含以下内容,其中导入是rust模块:

import GQLwrapper
    
print("running app.py")
def test_function:
    print("running test function")

rust调用正在运行文件,并且输出'running app.py',但测试函数本身没有被调用?

mpbci0fu

mpbci0fu1#

您可以在模块上呼叫call_method0

use pyo3::prelude::*;

fn main() -> pyo3::PyResult<()> {
    const CODE: &str = r#"
print("running app.py")

def test_function():
   print("running test function")

"#;

    Python::with_gil(|py| {
        let module = PyModule::from_code(py, CODE, "", "")?;
        let result = module.call_method0("test_function")?;
        Ok(())
    })
}

相关问题