gpt4 book ai didi

c++ - PyImport_AppendInittab 怎么会失败?

转载 作者:搜寻专家 更新时间:2023-10-31 00:45:26 24 4
gpt4 key购买 nike

根据官方文档,PyImport_AppendInittab失败时将返回 -1。但是,它没有具体说明此功能失败的原因。

我想知道它是否只能由于程序员的错误(不正确的参数、未在正确的时间调用等)而失败,或者它是否也可能由于一些其他因素而失败程序员的控制(如未安装 Python)。

我问是因为我想知道我是否应该用断言或异常来处理这个问题。此外,如果我应该处理异常,有什么方法可以让我从 Python API 捕获错误消息,该消息指定函数调用失败的原因?

最佳答案

根据文档,PyImport_AppendInittab()PyImport_ExtendInittab() 的便捷包装器,如果无法扩展表则返回 -1。此外,PyImport_ExtendInittab() 返回 -1“如果分配的内存不足以扩展内部表”。这两个函数“应该在 Py_Initialize() 之前调用”。

因此,只有当程序内存不足时,这些函数才会失败。我猜他们在提供无效参数时也可能会失败,例如,当试图注册一个与现有模块同名的内置模块时。后一种情况很容易避免,因为内置模块的名称是众所周知的。

总而言之,您可以假设返回值 -1 表示“内存不足”,这永远不会发生,因为该函数仅在进程的早期调用(在 Py_Initialize() 之前) ), 再加上模块表所需的内存量相当小。

如果 PyImport_AppendInittab() 失败,Python 不会提供错误字符串。要抛出一个有意义的异常,您可以只报告此时您知道的信息:无法将模块 MODULENAME 添加到解释器的内置模块

关于c++ - PyImport_AppendInittab 怎么会失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6827185/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com