我试图整理一个使用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
Run Code Online (Sandbox Code Playgroud)
最小代码:
#include <Python.h>
int main (int, char**)
{
Py_Initialize ();
Py_Finalize ();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
操作系统是32位Vista.
使用的python版本是一个python 3.2调试版本,使用VC++ 10从源代码构建.
来自同一版本的python_d.exe文件运行没有任何问题.
有人可以解释这个问题以及如何解决它吗?我自己的google-fu让我失望了.
编辑1
经过python源代码后,我发现,正如错误所说,没有注册编解码器搜索功能.这两个codec_register
和PyCodec_Register
是他们应该的.这就是代码中没有任何一个被调用的函数.
我真的不知道这意味着什么,因为我仍然不知道应该何时以及从何处调用这些函数.从我的其他python构建(3.1.3)的源代码中完全没有引发错误的代码.
编辑2
我在下面回答了我自己的问题.