Как скрыть окно консоли в python?

Я пишу IRC-бота на языке Python.

Я хочу сделать из него автономные двоичные файлы для Linux и Windows. И главным образом я хочу, чтобы при запуске бота окно консоли скрывалось, и пользователь не мог видеть это окно.

Что я могу сделать для этого?

Комментарии к вопросу (1)

Просто сохраните его с расширением .pyw. Это предотвратит открытие окна консоли.

В системах Windows не существует понятия "исполняемый режим". Программа установки Python автоматически ассоциирует файлы .py с python.exe, так что двойной щелчок на файле Python запустит его как сценарий. Расширение также может быть .pyw, в этом случае окно консоли, которое обычно появляется, подавляется..

Пояснение внизу раздела 2.2.2

Комментарии (2)

В linux просто запустите его, и никаких проблем. В Windows нужно использовать исполняемый файл pythonw.

Update

Хорошо, если я правильно понял вопрос в комментариях, вы спрашиваете, как сделать так, чтобы командное окно, в котором вы запустили бота из командной строки, потом исчезло?

  • UNIX (Linux)

$ nohup mypythonprog &

  • Windows

C:/> start pythonw mypythonprog

Я думаю, что это правильно. В любом случае, теперь вы можете закрыть терминал.

Комментарии (8)

На Unix-системах (включая Linux, macOS и BSD)

Используйте nohup mypythonprog &, и вы сможете закрыть окно терминала, не прерывая процесс. Вы также можете выполнить exit, если вы работаете в облаке и не хотите оставлять висящий процесс оболочки.

В системах Windows

Сохраните программу с расширением .pyw, и теперь она будет открываться с помощью pythonw.exe. Никакого окна оболочки.

Например, если у вас есть foo.py, вам нужно переименовать его в foo.pyw.

Комментарии (0)

Если все вы хотите сделать, это запустить ваш скрипт Python на компьютере с ОС Windows, что интерпретатор Python установлен, преобразовывая расширение сохраненного сценария '.пы' до '.pyw' следует сделать трюк.

Но если вы're, используя py2exe, чтобы преобразовать свой сценарий в отдельное приложение, которое будет работать на любой Windows-машины, то вам нужно сделать следующие изменения в своем 'настройки.пы' файл.

Ниже приведен пример простого языка Python-интерфейс выполнен с использованием Tkinter:

from distutils.core import setup
import py2exe
setup (console = ['tkinter_example.pyw'],
       options = { 'py2exe' : {'packages':['Tkinter']}})

Изменение цены на "консоль" в коде выше, чтобы "окна" и..

from distutils.core import setup
import py2exe
setup (windows = ['tkinter_example.pyw'],
       options = { 'py2exe' : {'packages':['Tkinter']}})

Это будет только открыть сгенерированный Tkinter GUI и без окна консоли.

Комментарии (3)

Это скроет вашу консоль. Внедрять эти строки в ваш код, чтобы начать прятать свои консоли в первую очередь.

import win32gui, win32con

The_program_to_hide = win32gui.GetForegroundWindow()
win32gui.ShowWindow(The_program_to_hide , win32con.SW_HIDE)
Комментарии (6)

Некоторая дополнительная информация. для ситуаций, что'll необходимо решение win32gui написал Мохсен Хаддади ранее в этой теме:

Как питона 361, win32gui & win32con не являются частью библиотеки Python СТД. Чтобы использовать их, пакет pywin32 должны быть установлены; теперь можно через Пип.

Больше информации на пакет pywin32 на: https://stackoverflow.com/questions/6624672/how-to-use-the-win32gui-module-with-python.

Кроме того, для применения усмотрения при закрытии окна так, чтобы ненароком не закрыть любое окно на передний план, разрешение может быть продлено вдоль линий следующие:

try     :

    import win32gui, win32con;

    frgrnd_wndw = win32gui.GetForegroundWindow();
    wndw_title  = win32gui.GetWindowText(frgrnd_wndw);
    if wndw_title.endswith("python.exe"):
        win32gui.ShowWindow(frgrnd_wndw, win32con.SW_HIDE);
    #endif
except  :
    pass
Комментарии (4)