2017-09-06 85 views
0

我正在使用Jupyter筆記本作爲Python接口到C++代碼。如果我啓動了相同的Python代碼與Jupyter筆記本不顯示C + +輸出(cout)

$蟒蛇mycode.py

我可以在終端看到所有的「性病::法院」的C++代碼的語句,但如果我的所有執行Jupyter筆記本塊「cout」不顯示。

你知道我是否以及如何在Jupyter筆記本上看到標準輸出流?

謝謝!

+0

你能提供一個可以複製行爲的基本示例?您是否在Jupyter筆記本中使用C++內核?,您對問題的描述過於模糊。 – AmeyaVS

+0

因爲需要安裝不同的庫(見[此鏈接](http://nest-simulator.org)),因此重現該行爲並不容易。 爲了更好地定義問題:我沒有Jupyter中的C++內核,因爲我只執行與已編譯的可執行文件(C++中可執行文件的源代碼)進行交互的Python代碼。 我希望這可以澄清一點問題。 – Alberto

+0

你的場景很模糊,你能詳細闡述一下你的意思是「python interface to C++ code」是什麼意思?你最好用一個示例代碼發佈一個例子來幫助你? – AmeyaVS

回答

2

是的,這是一個已知的問題。在編寫Python時,大多數對象都會寫入對象,提供攔截攔截。大多數編譯庫不會試圖寫入sys.stdin/sys.stdout,他們只是打開文件描述符並寫入它,並且不能攔截它。大多數情況下,它可以在底層庫中進行修復,但不是很多人會費心去報告它。

您將在您啓動筆記本的終端中看到您的C++輸出。有關於如何「修復」的想法,但它不是微不足道的。

注意,可以再現通過直接寫入的文件描述符1,「嗒嗒」將出現在終端上,其中筆記本電腦開始:

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 
+0

感謝您的澄清!在詢問之前我查找了它,但我沒有找到答案。 – Alberto