问题标签 [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 - 为了使用 Python 从 Rust 程序内部调用函数,最佳实践是什么?
我想实现一个由 Python UI 和一些 Rust 数据存储和函数组成的系统。用户执行 python 代码,然后在子进程中执行 Rust 程序。我希望 Rust 程序在后台运行,等待与 Python UI 交换变量或函数调用(例如每次按下按钮时)。
我的障碍是:
我试图制作一个简单的 Rust FFI 库,可以使用 Python 中的 ctypes 调用,但我不知道这个库如何能够与在后台运行的已编译 rust 程序进行通信。
另一种方法是使用 PyO3 使用 rust 制作 python 模块。但是我再次无法理解这将如何与 rust 程序合作交换数据
python - actix Actor 如何拥有 PyO3 Python?
我正在尝试创建具有 PyO3 Python 解释器和 Py 对象的 Actix Actor。
问题是创建python解释器actor的正确方法是什么?
我认为由 Actor trait 定义的静态引起的错误。 https://docs.rs/actix/0.7.4/actix/trait.Actor.html
有没有 Actor 或 Context 的方式让对象需要生命参数?
rust 版本:nightly-2018-09-04,actix 版本:0.7.4
这是当前代码。
此代码无法编译此错误。
python - 编写一个等效于 Python 函数的 pyo3 函数,该函数返回其输入对象
我正在为我的库编写一个 Rust 后端,我需要在以下函数中实现等价的功能pyo3
:
这应该返回与输入相同的对象,并且获取返回值的函数应该持有对输入的新引用。如果我在 C API 中写这个,我会写成:
在PyO3PyObject
中,我发现导航, PyObjectRef
, &PyObject
, Py<PyObject>
,之间的差异非常令人困惑Py<&PyObject>
。
这个函数最幼稚的版本是:
除其他外,的生命周期x
和返回值不一样,加上我看不到pyo3
增加引用计数的机会x
,事实上编译器似乎同意我的观点:
我可能有一种方法可以使用参数手动增加引用计数_py
并使用生命周期注释来使编译器满意,但我的印象是pyo3
打算使用对象生命周期来管理引用计数本身。
编写此函数的正确方法是什么?我应该尝试将其包装在Py
容器中吗?
rust - 如何将 PyObjectRef 转换为 PyString?
我有一个接受 Python 列表的函数。我希望列表由字符串组成。我如何提取它们?
软件版本:Python 3.7、nightly Rust 1.33.0、pyo3 0.5.2。
rust - 使用 kwargs 从 Python Rust 函数调用失败
我很难去kwargs
上班。我明白,就像#[args(args="*")]
是为了args
,#[args(kwargs="**")]
是为了kwargs
。
但是,当我打包以下使用pyo3-pack
并尝试test1
使用任何参数调用时,我得到了错误MyClass.test1()() takes at most 0 argument (1 given)
。
我究竟做错了什么?
python - PyO3 中自定义结构的向量
我是 Rust 和 PyO3(来自 Python)的新手,所以这对于更有经验的人来说可能是显而易见的。
我在 PyO3 中声明了一个 pyclass 结构。
然后我Block
在一个 rust 函数中使用,它接受一个向量Block
并输出一个 int 向量(下面的签名)
当我使用编译时nightly-x86_64-apple-darwin
,出现以下错误:
我该如何解决这个问题?
编辑: Caio 是对的。我在追溯错误时犯了一个错误。以前我写过
然后我在一个 rust 函数中使用 Block,该函数接受一个 int 向量并输出一个 Block 向量(下面的签名)
但实际的违规功能是:
我已经更新了问题以使其更清楚。
python - 测试用 X 语言编写的 Python 扩展的推荐方法
我有一些class A
是我使用 PyO3 在 Rust 中编写的 Python 扩展的一部分。class A
被导入并按原样使用,以及作为更大 Python 包的一部分在我的 Python 代码中被子类化。它并不意味着是一个独立的 Rust 库。
我想进行测试,class A
但我不确定是否应该用 Rust、Python 或两者都编写测试。
测试用另一种语言(如 Rust)编写的 Python 扩展的推荐方法是什么?
python - PyO3中对象向量的垃圾收集
我有 2 个 pyclassBlock
和BlockGroup
.
我是 PyO3 的新手,我已经阅读了有关垃圾收集的文档,但我并没有完全理解它。
如果您的类型拥有对其他 python 对象的引用,则需要与 Python 的垃圾收集器集成,以便 GC 知道这些引用。
鉴于BlockGroup
拥有具体Block
对象,我是否需要实现自定义垃圾收集?
python - 如何使用 pyo3 从 Python 文件中调用 Rust 函数?
我正在开发一个视频游戏,我需要texture:"", coords:"", text:"", action:""
从 Python 文件中设置 Rust 对象(例如,添加一个带有 的按钮)。
我正在使用 pyo3 crate 来链接 Python 和 Rust。我成功地从我的 Rust 代码调用 Python 脚本,但我找不到如何从 Python 文件调用 Rust 函数。
执行我的 Python 脚本的 Rust 代码:
我想从我的 Python 脚本中调用的 Rust 函数:
我的 Python 脚本:
我得到这个输出:
rust - 如何为我的 rust 结构实现特征 FromPyObject
考虑一个通过 pyo3 暴露给 python 的简单 rust 类
现在有一个函数应该以这种方式用python中的两个这样的结构调用:
因此一个定义
现在编译器声称PyMyStruct
应该实现 trait FromPyObject
:
但我不知道如何PyMyStruct
从PyAny
...检索实例、指针或其他任何东西。有人可以帮我吗?