Задать вопрос
zvepb
@zvepb

Как исправить ошибку после компиляции pyinstaller --noconsole?

После компиляции простого кода
import os

import eel


dirname = os.path.dirname(__file__)
eel.init(os.path.join(dirname, "style/"))
eel.start("qr.html", block=True, size=(530, 370))

через pyinstaller --onefile --noconsole file.py я получаю ошибку при запуске File "PyInstaller\loader\pyimod02_importers.py", line 499, in exec_module
File "bottle.py", line 73, in
AttributeError: 'NoneType' object has no attribute 'write'


Как я могу исправить это?

В bottle.py на 73 строке находится код
try:
    _stdout, _stderr = sys.stdout.write, sys.stderr.write
except IOError:
    _stdout = lambda x: sys.stdout.write(x)
    _stderr = lambda x: sys.stderr.write(x)

Нашел информацию что это может быть связано с тем, что библиотека eel записывает в sys.stdoutи sys.stderr, которые при компиляции через --noconsole устанавливаются в None. Но решения из сети пока не помогли.
  • Вопрос задан
  • 332 просмотра
Подписаться 2 Простой Комментировать
Решения вопроса 1
Griboks
@Griboks
Попробуйте перенаправить стандартные потоки (contextlib.redirect_stdout) перед импортом проблемной библиотеки. Ну или просто скомпилируйте в оконном режиме.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы