问题标签 [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.
rust - 将 PyAny 转换为给定类型的 PyRef,而不需要额外的提取成本?
有效但不是我想要的最小示例:
所以这将引用一个MyStruct
生活在python堆中的人并对其进行比较,我的理解是不会发生复制/克隆。
但这不是pythonic的方式。参数other
不必是同一类型。TypeError
比较方法应该只返回,而不是提高 a NotImplemented
。
我正在尝试更改签名,以便
- 我可以接受任意 python 对象。我以为
&PyAny
会恰到好处 - 然后我可以检查类型,或尝试转换,但无需将对象从 Python 堆克隆到 Rust 堆。
有什么方法可以将 a&PyAny
转换为 a
PyRef<MyStruct>
吗?
python - PyO3 将 rust 结构转换为 &PyAny
我有一个结构
我有这个功能
pyclass
问题是,我怎样才能从一个期望的函数返回一个标有PyResult<&'py PyAny>
python - PyO3 在 Rust 中实现 python 可迭代类
我找到了如何在 Rust 中实现 PyIterProtocol 的示例。
但我无法弄清楚如何实现一个可迭代但本身不是迭代器的容器类。本质上,我希望能够在 Python 中分解我的对象,例如
python - PyO3 将 rust 结构转换为 PyObject
我有一个简单的类注释#[pyclass]
现在我有表格的功能
我应该用一些东西来注释我的结构以使其派生pyo3::ToPyObject
吗?
rust - 如何更改一个值,使其在 Rust 中没有静态生命周期
我有以下函数,它使用 PyO3 调用 python 函数并获得结果(在这种情况下,int
分配给 a i32
):
当我尝试编译时,出现以下错误:
我对 Rust 很陌生,可能正在做一些愚蠢的事情(很可能是 X/Y 问题)。我怎样才能得到一个py.eval
与python解释器没有生命周期的价值(这是我假设在这里发生的事情)?
python - 使用 PyO3 和 rust-cpython 制作的 Rust 库在运行 pytest 时不会导入
在遵循有关编译 Rust 库以进一步从 Python 导入的各种教程(我已经尝试过PyO3和rust-cpython)时,我已经能够构建一个简单的库并成功地从我的main.py
交互式 Python shell 中导入它。
但是,在尝试测试纯 Python 和我的 Rust 库并对其进行基准测试时,我总是遇到导入错误:
同样,该库从主 python 文件和交互式 shell(如IPython
.
我在 macOS Big Sur 上,Python 3.8 使用pyenv
. 这是我的Cargo.toml
:
PyO3
从andrust-cpython
到相同的结果,其他一切都非常琐碎。
rust - pyo3 - 获取异步函数的结果
我正在尝试将 rust 异步函数导出到 python。
这就是我想在我的 python 文件中使用的方式。
在 Rust 中,我确实喜欢
但是在这里我得到了这个错误future cannot be sent between threads safely
在这里卡了很长时间,甚至不知道我在做什么..
提前致谢!
python - 如何使用 PyO3 构建混合 Python Rust 包
我正在寻找有关如何构建 Python 包的信息,该包包含用 Rust 编写的扩展模块,两种语言混合在一起。我正在将 pyO3 用于 FFI,但似乎找不到有关如何执行此操作的示例。具体来说:我的 rust 库公开了一种类型,该类型后来被 python 类包装。只有 python 类应该为以后的用户公开,并且包应该是结构化的,这样它就可以被推送到 PyPI。
例如:
在生锈的一面
在蟒蛇方面
我会感谢任何信息、来源、示例等!
python - 使用 pyo3 crate 时如何在 Rust 程序中捕获 Python 解释器的标准输出
我正在使用 crate 提供的 Python 解释器的 Rust 绑定pyo3
。
我有以下代码:
我希望script
从我的 Rust 程序中捕获和访问写入 stdout 的所有内容,而不是写入实际的 stdout。
也就是说,在这个例子中,程序实际上不应该 print abc
,但它应该将它存储在内存中的某个地方,并交给我一个引用、拥有的字符串或其他东西。
理想情况下,这将通过回调来工作,在创建输出时将它们一个接一个地交给我。
python - Pyo3绑定对象的静态生命周期注释
我正在尝试使用 Rust 及其 Tokio 运行时创建一个客户端,并使用 and 将其绑定到pyo3
python pyo3-asyncio
。举一个最小的例子,假设我想要一个Client
连接到127.0.0.1:1234
并有一个echo
方法来处理通过套接字传入的数据的类。我希望该函数返回一个 Python 协程,以便我可以将它与async
Python 代码库中的函数一起使用。示例用例:
我已经按照文档pyo3-asyncio
并找到了这个函数。我写了这个(希望是最小的)片段来重现这个问题:
问题似乎是self
,也就是说Client
,有一个匿名的生命周期,但预计会有'static
一个。编译器说:
有没有办法可以确保客户端的静态生命周期?也许我错误地解决了这个问题?