问题有点具体。我使用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二进制文件复制)。我试图在调试器中追查问题,但我在合理的时间内无法理解python内部。
有人有任何想法可能是什么原因?我想这只是一个我不知道的小问题,但我现在的选项有点短......
答案 0 :(得分:0)
这个问题有一张Python票。不知怎的,我第一次没找到它,但它确实很有意义。这些流在非终端应用程序中被窃听。它可以在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