Я использую Jupyter Notebook в качестве интерфейса Python для кода C ++. Если я запускаю тот же код Python с
$ python mycode.py
Я могу видеть в Терминале все операторы «std :: cout» кода C ++, но если я выполняю блок Jupyter Notebook, все «cout» не отображаются.
Знаете ли вы, как и как я могу увидеть стандартный поток вывода на ноутбуках Jupyter?
Спасибо!
Да, это известная проблема. При написании Python большинство объектов пишут sys.stdout
/sys.stderr
объект, предоставляет крючки для перехвата. Большинство библиотек компиляции не пытаются писать в sys.stdin
/sys.stdout
, они просто открывают дескриптор файла и записывают в него, и вы не можете это перехватить. В большинстве случаев это можно исправить в базовой библиотеке, но не так много людей пытаются сообщить об ошибке.
Вы увидите ваш вывод c ++ в терминале, где вы начали свои ноутбуки. Есть идеи о том, как это исправить, но это нетривиально.
Обратите внимание, вы можете воспроизвести, непосредственно написав filedescriptor 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
Других решений пока нет …