Чтобы обобщить и дополнить существующие ответы:
python.exe
является консольным (терминальным) приложением для запуска сценариев типа CLI. Если не запустить из существующего окна консоли, python.exe
откроет новое окно консоли. Стандартные потоки sys.stdin
, sys.stdout
и sys.stderr
подключены к окну консоли. Выполнение синхронно при запуске из окна консоли cmd.exe
или PowerShell: см. Следующий комментарий к eryksun . Если было создано новое окно консоли, оно остается открытым до тех пор, пока скрипт не завершится. При вызове из существующего окна консоли приглашение блокируется до завершения сценария. pythonw.exe
- графическое приложение для запуска графических интерфейсов GUI / no-UI-at-all. Окно консоли не открывается. Выполнение является асинхронным: при вызове из окна консоли сценарий запускается только , и приглашение возвращается сразу, независимо от того, работает ли скрипт или нет. Стандартные потоки sys.stdin
, sys.stdout
и sys.stderr
НЕ доступны. Внимание: если вы не предпримете дополнительные шаги, у этого есть потенциально неожиданные побочные эффекты: Необработанные исключения заставляют скрипт прерывать молча . В Python 2.x просто попытка использовать print()
может привести к тому, что это произойдет (в 3.x, print()
просто не действует). Чтобы предотвратить это из вашего сценария и узнать больше, см. этот ответ . Ad-hoc, вы можете использовать перенаправление вывода: Спасибо, @handle. pythonw.exe yourScript.pyw 1>stdout.txt 2>stderr.txt
(из PowerShell: cmd /c pythonw.exe yourScript.pyw 1>stdout.txt 2>stderr.txt
) для записи вывода stdout и stderr в файлах . Если вы уверены, что использование print()
- единственная причина, по которой ваш скрипт терпит неудачу с pythonw.exe
, и вы не заинтересованы в выводе stdout, используйте команду @ handle из комментариев: pythonw.exe yourScript.pyw 1>NUL 2>&1
Caveat: Это перенаправление вывода метод not работает при вызове *.pyw
скриптов непосредственно (в отличие от передачи пути файла сценария к pythonw.exe
). См. Второй комментарий eryksun и последующие действия ниже. Вы можете контролировать, какой из исполняемых файлов запускает ваш скрипт по умолчанию - например, при открытии из проводника - путем выбора правильного расширения имени файла:
*.py
файлы по умолчанию связаны (вызывается) с файлами python.exe
*.pyw
по умолчанию связаны (вызываются) с pythonw.exe
Если пользователь нажмет на - полупрозрачную область - ModalBottomSheet
не закроется, используя - WillPopScope
showModalBottomSheet(
context: context,
builder: (context) {
return WillPopScope( // add this
onWillPop: () async => false,
child: Container()); // your code continues
});