嵌入式 Python:Py_Initialize:无法初始化系统标准流
Embedded Python: Py_Initialize: can't initialize sys standard streams
问题更具体一些。我使用的是3.3.3版本的Python,并自己构建了它。当我把它嵌入到我的程序中_Py_InitializeEx_Private()
退出时出现这个错误Py_Initialize: can't initialize sys standard streams
背景:我正在使用Visual Studio 2012 Express,并在boost线程中启动Python。简化后,调用看起来像这样:
int SubSysPython::Start()
{
m_PythonThread = boost::thread(&SubSysPython::StartPython, this);
return m_RC;
}
void SubSysPython::StartPython()
{
Py_Initialize();
FILE* fp = nullptr;
fopen_s(&fp, startScript.c_str(), "r");
PyRun_SimpleFile(fp, startScript.c_str());
fclose(fp);
Py_Finalize();
}
库是从工作构建中复制的,python lib文件夹是原始的(从3.3.3二进制dist中复制)。我试图在调试器中跟踪问题,但我未能在合理的时间内理解python的内部结构。
有人知道可能是什么原因吗?我想这只是一个小问题,我没有意识到,但我现在有点短的选择。
这个问题有一个Python票证。不知怎么的,我第一次没能找到它,但它绝对是相关的。流在非终端应用程序中是有bug的。可以在Python代码中使用以下命令修复:
#ifdef MS_WINDOWS
if (!is_valid_fd(fd) || GetStdHandle(STD_INPUT_HANDLE) == NULL) {
#else
if (!is_valid_fd(fd)) {
#endif
is_valid_fd()段落可以在这里找到票:Issue17797
相关文章:
- 是否可以初始化不可复制类型的成员变量(或基类)
- C++使用整数的压缩数组初始化对象
- C++初始化基类
- 多成员Constexpr结构初始化
- 复制列表初始化的隐式转换的等级是多少
- 内联映射初始化的动态atexit析构函数崩溃
- 如何在C++中初始化嵌套类中的2个memeber
- 如何声明特征矩阵,然后通过嵌套循环初始化它
- 没有用于初始化C++中的变量模板的匹配构造函数
- 在未初始化映射的情况下,将值插入到映射的映射中
- C++成员初始化
- 为什么在C++中首先初始化成员类
- 同时具有"聚合初始化"和"模板推导"
- 初始化具有非默认构造函数的std::数组项的更好方法
- libstdc++ 文件系统中未初始化的用法?
- 跨系统的静态成员初始化
- 使用文字初始化系统::String^,但不使用字符串::c_str()或char[]
- 映射到unordered_map中的对象,它是否被系统初始化
- 系统构造函数初始化失败
- 嵌入式 Python:Py_Initialize:无法初始化系统标准流