我试图将使用嵌入式python 3.2解释器的简单c++测试项目放在一起。项目构建良好,但是Py_Initialize引发了致命错误:

Fatal Python error: Py_Initialize: unable to load the file system codec
LookupError: no codec search functions registered: can't find encoding

最小代码:
#include <Python.h>

int main (int, char**)
{
  Py_Initialize ();
  Py_Finalize ();
  return 0;
}

操作系统是32位Vista。

使用的python版本是python 3.2调试版本,使用VC++ 10从源代码构建。

来自同一构建的python_d.exe文件可以正常运行。

有人可以解释这个问题以及如何解决吗?我自己的google-fu使我失望。

编辑1

经过python源代码后,我发现,如错误所示,尚未注册任何编解码器搜索功能。 codec_registerPyCodec_Register都应该正确。只是代码中没有任何地方调用这些函数。

我真的不知道这意味着什么,因为我仍然不知道何时应该从何处调用这些函数。我的其他python版本(3.1.3)的源代码中完全缺少引发错误的代码。

编辑2

在下面回答了我自己的问题。

最佳答案

检查PYTHONPATHPYTHONHOME环境变量,并确保它们未指向Python2.x。

http://bugs.python.org/issue11288

关于c++ - Py_Initialize失败-无法加载文件系统编解码器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5694706/

10-09 17:10
查看更多