Как вызвать функцию ржавчины из файла Python, используя pyo3? - PullRequest
4 голосов
/ 28 июня 2019

Я работаю над видео-игрой, в которой мне нужно будет установить объекты ржавчины (например, добавить кнопку с текстурой: "" corres: "" text: "" action: "") из файлов Python.

Я использую ящик pyo3 для связи Python и ржавчины.

Мне удалось вызвать скрипты Python из моего кода ржавчины.

Но я не могу найти, как вызвать функцию ржавчины из файла Python.

Код Rust, который выполняет мой скрипт на python:

fn main() -> PyResult<()> {
    let gil = Python::acquire_gil();
    let py = gil.python();
    let script = fs::read_to_string("deep_hello.py")?;

    println!("RUNNING :\n[\n{}]", script);
    py.run(&script, None, None)
}

Функция Rust, которую я хотел бы вызвать из моего скрипта Python:

/// hello_from_rust(/)
/// --
///
/// This function prints hello because she is very nice.
#[pyfunction]
fn hello_from_rust() {
    println!("Hello from rust from python !");
}

Мой скрипт на питоне:

hello_from_rust()

Я получаю этот вывод:

RUNNING :
[
hello_from_rust()
]
Error: PyErr { type: Py(0x7f9cdd1e9580, PhantomData) }
...