Убрать консоль при выполнии скрипта
Есть питоновский скрипт. Хочу сделать из него исполняемый файл, который будет запускаться с нужными аргументами через ярлык. Проблема в том, что при запуске открывается виндовая консоль, которая при этом не закрывается автоматически после окончания скрипта! Перепробовал различные варианты: переименовал .py файл в .pyw, собирал с опциями --noconsole и --windowed -- ничего не помогло. Как убрать эту консоль?
Также используется selenium, так что эта консоль может появляться от драйвера браузера. Как её убрать вообще непонятно.
Ответы (1 шт):
Нашёл решение, может кому-то пригодится. Может показаться безумным, но это единственное что у меня работает.
Переименовываем в
.pyw, судя по докам pyinstaller автоматически поставит нужные опции.РЕДАКТИРУЕМ СОРС selenium-а (лучше делать в venv)
Lib\site-packages\selenium\webdriver\common\service.py:
Заменяем создание процесса в методе start на это:
self.process = subprocess.Popen(cmd, stdin=PIPE, stdout=PIPE, stderr=PIPE, shell=False,
creationflags=0x08000000)
Ключевое тут creationflags с константой типа CREATE_NO_WINDOW и shell=False. Остальное, вероятно, можно оставить так, как в вашей текущей версии, но я не пробовал.
- Теперь можно собирать (
--onefileнеобязательно,--noconsoleставится автоматически из-за расширения файла):
pyinstaller.exe --onefile script.pyw
В итоге нет ни консоли от скрипта, ни консоли драйвера!