为什么应该在 Py_Initialize() 之前调用 PyImport_AppendInittab()?

Dan*_*l F 5 c++ python

根据文档,PyImport_AppendInittab“应该在 Py_Initialize() 之前调用”。

没有解释为什么会这样,忽略这个建议会产生一个有效的应用程序。那么,既然这是有效的,那么在什么情况下它会无效呢?

eca*_*mur 5

因为文档是这样说的;并且违反 API 可能会在今天但不是明天产生一个有效的应用程序。

您可能会遇到的几个问题:

  • sys.builtin_module_names在 内初始化Py_Initialize,因此它不会包含您的模块
  • PyImport_AppendInittab不带任何锁,因此如果Py_Initialize在多线程应用程序中调用它,可能会导致内存损坏