Jupyter笔记本电脑不显示C++;输出(cout) 我使用一个Juyter笔记本作为Python接口到C++代码。如果我用

Jupyter笔记本电脑不显示C++;输出(cout) 我使用一个Juyter笔记本作为Python接口到C++代码。如果我用,python,c++,jupyter-notebook,Python,C++,Jupyter Notebook,$python mycode.py 我可以在终端中看到所有C++代码的“STD:CUT”语句,但是如果我执行JooYToT笔记本块,所有的“CUT”都不会显示。 你知道我是否以及如何在Jupyter笔记本上看到标准输出流吗 谢谢 是的,这是一个已知的问题。在编写Python时,大多数对象都会编写sys.stdout/sys.stderr对象,该对象提供了用于拦截的钩子。大多数编译库不需要尝试写入sys.stdin/sys.stdout,它们只需打开文件描述符并写入,而您无法截获它。大多数情况下,

$python mycode.py

我可以在终端中看到所有C++代码的“STD:CUT”语句,但是如果我执行JooYToT笔记本块,所有的“CUT”都不会显示。 你知道我是否以及如何在Jupyter笔记本上看到标准输出流吗


谢谢

是的,这是一个已知的问题。在编写Python时,大多数对象都会编写
sys.stdout
/
sys.stderr
对象,该对象提供了用于拦截的钩子。大多数编译库不需要尝试写入sys.stdin/
sys.stdout
,它们只需打开文件描述符并写入,而您无法截获它。大多数情况下,它是可以在底层库中修复的,但是没有多少人会费心去报告它

<>你会看到你的C++输出在你开始笔记本的终端上。关于如何“修复”这一问题,有很多想法,但这并非小事

注意,您可以通过直接写入filedescriptor
1
,在笔记本启动的终端上将出现“blah”:

import os
os.write(1, 'blah\n'.encode())
我的终端:

[I 12:13:51.703 LabApp] Adapting to protocol v5.1 for kernel 5cf9f732-5a0e-417d-8b66-bc50d3cbbe80
blah
[I 12:15:51.633 LabApp] Saving file at /Untilted1.ipynb

如果你使用子进程.CCHECUTOUTPUTE()来运行程序,你可以得到C++输出,在Juyter笔记本上显示。 例如:

a = subprocess.check_output("./your_program")
print(a)

你能提供一个基本的例子,在那里你可以复制这种行为吗?在Jupyter笔记本中使用C++内核吗?你对问题的描述太模糊了。因为需要安装各种库(见),所以不容易重现行为。为了更好地定义问题:我在Jupyter没有C++内核,因为我只执行与已经编译的可执行文件(C++中的可执行代码的源代码)接口的Python代码。我希望这能澄清一点问题。你的场景非常模糊,你能详细说明“Python接口C++代码”是什么意思吗?你能用一个示例代码来推荐一个例子来帮助你吗?谢谢你的解释!我在问之前找了一下,但没有找到答案。