作者热门文章
- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我正在尝试组合一个使用嵌入式 python 3.2 解释器的简单 c++ 测试项目。项目构建良好,但 Py_Initialize 引发 fatal error :
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_register
和 PyCodec_Register
都是应有的。只是代码中没有任何地方调用这些函数。
我真的不知道这意味着什么,因为我仍然不知道应该何时以及从何处调用这些函数。我的其他 python 构建 (3.1.3) 的源代码中完全缺少引发错误的代码。
编辑 2
在下面回答了我自己的问题。
最佳答案
检查 PYTHONPATH
和 PYTHONHOME
环境变量并确保它们不指向 Python 2.x。
关于c++ - Py_Initialize 失败 - 无法加载文件系统编解码器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5694706/
我是一名优秀的程序员,十分优秀!