Как скрыть окно консоли в python? - PullRequest
61 голосов
/ 19 апреля 2009

Я пишу бот IRC на Python.

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

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

Ответы [ 6 ]

95 голосов
/ 19 апреля 2009

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

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

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

29 голосов
/ 19 апреля 2009

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

Обновление

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

  • UNIX (Linux)

$ nohup mypythonprog &

  • Windows

C: /> запустить pythonw mypythonprog

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

17 голосов
/ 01 марта 2013

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

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

В системах Windows

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

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

9 голосов
/ 25 ноября 2016

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

Но если вы используете py2exe для преобразования вашего скрипта в автономное приложение, которое будет работать на любом компьютере с Windows, вам потребуется внести следующие изменения в ваш файл «setup.py».

В следующем примере показан простой Python-GUI, созданный с использованием Tkinter:

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

Измените "console" в приведенном выше коде на "windows" ..

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

Откроется только графический интерфейс, сгенерированный Tkinter, и не будет окна консоли.

5 голосов
/ 14 марта 2018

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

import win32gui, win32con

The_program_to_hide = win32gui.GetForegroundWindow()
win32gui.ShowWindow(The_program_to_hide , win32con.SW_HIDE)
4 голосов
/ 20 марта 2018

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

Начиная с python 361, win32gui и win32con не являются частью библиотеки python std. Для их использования необходимо установить пакет pywin32; теперь возможно через пункт.

Более подробная информация о пакете pywin32 находится по адресу: Как использовать модуль win32gui с 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
...