On Thu, Aug 3, 2017 at 4:22 PM, Chris Warrick <kwpol...@gmail.com> wrote: > > Simple: `scripts` are legacy. `entry_points` are the new thing. > There’s also a third approach: gui_scripts entry_points, which work > the same way on Linux/*nix, but on Windows, it means that running your > script by opening the created .exe files does not show a console > window. Note that stdout/stderr do not work in that mode under > Windows, which can lead to spurious application crashes. (GUI-only > processes cannot use stdout/stderr because they don’t have a console > attached)
A Windows GUI executable doesn't automatically inherit or create a console for standard I/O. (It has to manually call AttachConsole or AllocConsole.) But it does automatically inherit the standard handle values from the parent process (just the integer values, not the handles themselves). If these handles are inheritable and the child is created with handle inheritance, then standard I/O will work. For example: C:\Temp>echo spam | pythonw -c print(input()) >out.txt 2>&1 C:\Temp>type out.txt spam In the above example pythonw.exe is a GUI executable. The example reads "spam" from stdin and prints it to stdout, which is redirected to a file named "out.txt". For those who don't know, `>out.txt` is shell syntax to redirect stdout to "out.txt", and `2>&1` redirects stderr (2) to stdout (1). _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor