Python C API:如何使用 Py_eval_input 获取 PyRun_String 以使用导入的模块?

发布于 2024-11-10 11:58:27 字数 376 浏览 2 评论 0原文

PyRun_String("random.randint(1,10)", Py_eval_input, globals, globals);

返回错误:

Traceback (most recent call last):
  File "<string>", line 1, in <module>
NameError: name 'random' is not defined

在代码的前面,我做了:

PyImport_ImportModule("random");

我想这不是让它工作的方法。正确的方法是什么? 谢谢你!

PyRun_String("random.randint(1,10)", Py_eval_input, globals, globals);

returns error with:

Traceback (most recent call last):
  File "<string>", line 1, in <module>
NameError: name 'random' is not defined

earlier in the code, I did:

PyImport_ImportModule("random");

I guess this is not the way to get it work. What is the correct way?
Thank you!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

等风也等你 2024-11-17 11:58:27

PyImport_ImportModule 返回导入的值。您需要将其保存在 globals 中,名称为 random。总之:

PyMapping_SetItemString(globals, "random", PyImport_ImportModule("random"));

但不要忘记检查导入的结果,以防引发异常。

PyImport_ImportModule returns the imported value. You need to save it in globals under the name random. In summary:

PyMapping_SetItemString(globals, "random", PyImport_ImportModule("random"));

but don't forget to also check the result of the import in case it throws an exception.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文