Python — Блокнот Jupyter не показывает вывод C ++ (cout)

Я использую Jupyter Notebook в качестве интерфейса Python для кода C ++. Если я запускаю тот же код Python с

$ python mycode.py

Я могу видеть в Терминале все операторы «std :: cout» кода C ++, но если я выполняю блок Jupyter Notebook, все «cout» не отображаются.

Знаете ли вы, как и как я могу увидеть стандартный поток вывода на ноутбуках Jupyter?

Спасибо!

1

Решение

Да, это известная проблема. При написании 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
3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]