问题标签 [pyo3]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 使用 pyo3 的 Python 的 Rust 绑定
我正在尝试为 Python 生成 Rust 绑定。这是一个简单的例子:
如何为通用 Rust 类型生成绑定?
python - 将使用 Rust 制作的 Python 库发布到 pypi
这可能吗?
经过一番研究,似乎可以使用库 setuptools-rust 来轻松分发,但看起来用户也需要这个库 setuptools-rust。
没有 setuptools-rust 有什么方法可以使安装工作吗?
python - 如何使用pyo3将python变量从python文件返回到rust文件
这个论坛上的所有其他问题都告诉你如何使用 rust 在 python 中做一些事情,但我想做相反的事情。
我的 main.py 脚本中有一个函数可以读取用户的输入并将其存储。我想将该信息传递给一个 rust 文件,然后该文件将作为占位符打印此字符串。这是我的python代码:
我想使用callback()
in rust 的输出。我该怎么做呢?
python - PyO3 在 M1 上找不到 Rust 编译器,尽管安装了 cargo / rustc / rustup 并且在路径上
我正在尝试让 PyO3 在我的 Mac M1 mini 上工作。如果我按照步骤开始使用 PyO3:
我得到“rustc ...未安装或不在PATH中”:
我看到这个错误在 PyO3 问题中出现了很多,但通常通过安装 rustup 来解决。但是我已经安装了 rustup 并且在路径上:
(再次添加到 PATH 以确保。)我也尝试了 x86 工具链,结果相同。Cargo build 在 maturin 生成的string_sum
rust 代码上也运行良好:
我的 M1 设置、自制设置、rust 设置、python 设置或其他我错过的东西是不是很奇怪?
更多信息:
我也尝试过使用setuptools-rust
类似的效果,既直接调用 setup.py 也使用pip install .
.
python - 如何用 NDArray 输入和输出用 PyO3 包装函数?
我想包装一个函数,该函数采用一维 NDArray (rust-numpy) 和一个 usize 作为参数,并使用 PyO3 返回一个一维数组以从 python 调用代码。不幸的是,我找不到一个很好的例子来说明如何处理 PyO3 中的数组。这是我到目前为止的代码:
我添加了装饰器和模块包装功能。现在我收到此错误:
这是我的 cargo.toml:
有人可以告诉我如何实际修改 SMA 函数以与 PyO3 一起使用吗?谢谢!
rust - 如何在 Rust 中迭代 pyo3 PyObject?
我有一个预先导入的模块,我正在使用 python gil 调用一个方法,如下所示。
这将返回 rust 对象 PyObject,但返回的是 python list
。我想遍历这个列表以将内部转换成我可以在 Rust 中使用的东西(它是一个 Numpy 数组的 Python 列表,我正在使用 numpy/ndarray 板条箱)。
我对如何迭代这个有点困惑。如果我尝试cast_as
a PyList
,我会收到警告:UnsafeCell<PyObject> cannot be shared between threads safely
. 它似乎extract
也不起作用。
如何迭代这个 PyObject?谢谢。
编辑:根据要求添加更多详细信息
List[numpy.ndarray]
如果您使用的是 python Typing 系统,则python 的返回值是 a 。由于每个 numpy 数组的长度可能不同,我不能将其全部转换为 python 中的 numpy 数组并通过它。示例输出如下:
我在 Rust 中尝试过的内容:
let pylist = res.cast_as::<PyList>(py)?;
编译失败:
UnsafeCell<PyObject> cannot be shared between threads safely
。let pylist = res.extract::<PyList>(py)?;
编译失败:
the trait 'PyClass' is not implemented for 'PyList'
。请注意我use pyo3::prelude::*;
在顶部。let pyany = res.extract::<Vec<PyArray1<f64>>>(py)?;
编译失败:
the trait bound 'Vec<PyArray<f64, Dim<[usize; 1]>>>: pyo3::FromPyObject<'_>' is not satisfied
。这个 PyArray 来自numpy
板条箱。
python - Rust Pyo3 绑定:如何重用 python 方法
我有一个 Rust 类struct A<X>{...}
,我想创建几个 Python 类,每个类都有不同的X
所有这些类实现的许多方法看起来都是一样的。我怎么能重用所有这些代码
我想避免使用一个巨大的宏。
python - 如何使用 pyo3 将 Rust 函数作为回调传递给 Python
我正在使用 Pyo3 从 Python 调用 Rust 函数,反之亦然。
我正在努力实现以下目标:
Python 调用
rust_function_1
Rust 函数
rust_function_1
调用 Python 函数python_function
,将 Rust 函数rust_function_2
作为回调参数传递Python 函数
python_function
调用回调,在本例中为 Rust 函数rust_function_2
我不知道如何rust_function_2
作为回调参数传递给python_function
.
我有以下 Python 代码:
我有以下非编译 Rust 代码:
错误信息是: