我正在使用boost :: python来嵌入python,我就是这样做的:
void runCode(){
Py_Initialize();
//boost::python code goes here and embedded python code runs
Py_Finalize();
}
它第一次运行得很好,但是当它再次运行时,我收到了这个错误:
LookupError:未知编码:utf8
并且代码没有按预期运行,任何帮助都表示赞赏。
答案 0 :(得分:3)
由于你没有得到专家的回答,我提供了从学习类似问题的学习。 Python与reinitialization support存在问题。如果由于某些错误需要重新启动解释器,或者想要运行许多独立的解释器,这是很不幸的。
有一个问题是资源和内存泄漏(引自上面的链接):
错误和警告:加载的动态加载扩展模块 Python没有卸载。分配的少量内存 Python解释器可能无法释放(如果发现泄漏,请报告 它)。在对象之间的循环引用中绑定的内存不是 释放。扩展模块分配的某些内存可能无法释放。 如果初始化例程,某些扩展可能无法正常工作 不止一次被召唤;如果应用程序调用,则会发生这种情 Py_Initialize()和Py_Finalize()不止一次。
另一个问题是许多模块不能正确支持这一点,例如可以看到in this SO thread。 我认为这是您面临的问题。
似乎大多数Python应用程序都解决了这个问题:
如果第二个适合你,请继续。