注释
合作者
我也注意到了这条消息,但不知道它来自哪里,也不知道它对什么有影响。 |
当 Py_IsInitialized() == 1(例如 python 脚本中的“导入 gcode”)时会发生这种情况,因此 PyImport_ExtendInittab() 什么都不做,并且“解释器”模块未注册。 |
贡献者
在我松开它之前把它写下来,这里是例外:
|
贡献者
就是这样!这个 try catch 在 python3 中是完全多余的,模块实际上是在这里导入的:
所以另一个应该可以用 python3 的 ifdef 删除。 运行测试和合并请求将被提出 |
这不是问题。在 Python3 相反,当 PythonPlugin::PythonPlugin(struct _inittab *inittab)
: status(0)
, module_mtime(0)
, reload_on_change(0)
, toplevel(0)
, abs_path(0)
, log_level(0)
{
if (abs_path) {
wchar_t *program = Py_DecodeLocale(abs_path, NULL);
Py_SetProgramName(program);
}
if (inittab != NULL) {
if (!Py_IsInitialized()) {
if (PyImport_ExtendInittab(inittab) != 0) {
logPP(-1, "cannot extend inittab");
status = PLUGIN_INITTAB_FAILED;
return;
}
} else {
PyObject *sys_modules = PyImport_GetModuleDict(); // borrowed
for (int i = 0; inittab[i].name != NULL; i++) {
struct _inittab tab = inittab[i];
PyObject *module = tab.initfunc();
if (module == NULL) {
logPP(-1, "failed to initialize built-in module '%s'", tab.name);
status = PLUGIN_INITTAB_FAILED;
return;
}
PyImport_AddModule(tab.name); // borrowed
PyDict_SetItemString(sys_modules, tab.name, module);
Py_DECREF(module);
}
}
}
Py_UnbufferedStdioFlag = 1;
Py_Initialize();
initialize();
}
|
贡献者
你是对的,你的代码不需要编辑就可以工作! |
合作者
由#1042修复 |
axis
在python3 (3.7.7) 上运行Fedora 31
生成ImportError: 'interpreter' is not a built-in module
如下:有趣的是,这不是致命错误,因为我可以成功进行“Linuxcnc”测试。