Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Python > RE: python.exe vs pythonw.exe difference?

Thread Tools

RE: python.exe vs pythonw.exe difference?

Tim Peters
Posts: n/a
[moving this from comp.lang.python to zope-dev; it really belongs on a
Zope list, although schemes to change what pythonw does probably belong
on python-dev]

[Emile van Sebille <(E-Mail Removed)>]
>> I've possibly narrowed a problem I'm having running zope as a service
>> on winxp pro sp 1 in that when started from a command line as:
>> c:\zope\v27\lib\python\python.exe \

c:\zope\v27\lib\python\zope\startup\ -C \

[tim inserted backslashes above, to make the line structure clear]

>> it starts up just fine (although now running from the console).
>> But when I start it with:
>> c:\zope\v27\lib\python\pythonw.exe \

c:\zope\v27\lib\python\zope\startup\ -C \
>> it dies after about 30 seconds.
>> It wouldn't surprise me that I'm doing something it doesn't like (I'm
>> spawning additional processes from within a product but it worked
>> fine with 2.5),

It's unclear what "it" means, in "it wworked fine with 2.5". For example,
do you mean that the second command line, using pythonw.exe explicitly from
a DOS box worked fine, or do you mean that running Zope as a service on XP
Pro SP1 worked fine, or ...?

>> but I'm somewhat at a loss as to debugging it in> that when run as a
>> console app it works fine, but when run windowless it doesn't.

Did you look in your Zope log file(s) for tracebacks?

>> Do I have to write out check points to a file? or is there some way
>> to use Mark Hammonds process debugging tools? Or is this a bug,
>> known or otherwise?

[Thomas Heller]
> It has been reported that writing to the original sys.stdout (and
> maybe also sys.stderr) sooner or later raises an IOError when running
> pythonw.exe, unless these are redirected. Could this be the problem?

It could, although I have no idea what WinXP does (and don't have access to
XP). Here's a Python program to try:

import sys
if 1: # edit to 1 for stdout, 0 for stderr
console = sys.stdout
console = sys.stderr

import traceback
tb = file('tb.txt', 'w')

i = 0
while True:
i += 1
print >> tb, "Died when trying to write byte", i

Under Win98SE, and regardless of whether it writes to stdout or stderr, it
dies when run under pythonw, and tb.txt contains this after:

Died when trying to write byte 4097
Traceback (most recent call last):
File "", line 14, in ?
IOError: [Errno 9] Bad file descriptor

The point of pythonw.exe is that no console is created or inherited, and the
default stdin, stdout and stderr provided by MS C in that case are unusable
(although the output flavors can appear to be usable until some secret MS
limit is exceeded -- at least under Win98SE).

Reply With Quote

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off