Giles Brown wrote: > The special first line is: > > @pythoncmd -x "%~f0" %* & exit /b > > (In the python.org FAQ for windows it says > @setlocal enableextensions & python -x %~f0 %* & goto :EOF > but since I have no idea which is "right" I chose the simpler looking > one) > > This approach does require pythoncmd.exe to by in your %PATH% but I > think that is reasonable ;) > > I am a bit disappointed I couldn't think of a way of deciding if I was > running a ".cmd" file in sitecustomize.py so that I could just use the > normal python.exe. Using a renamed interpreter .exe is just a trick > for detecting when I am running .cmd files, but it means that the > script won't run on another machine that hasn't had the python.exe > copied to pythoncmd.exe on it. Which is a shame.
I'm having problems understanding your problem. If the file is a .cmd file then surely the second line (i.e. the one immediately following the python -x command) could simply do "import sethook" where sethook would be a module that sets your excepthook. Alternatively you could check at any point whether sys.argv[0] ends with '.cmd' or '.bat' (after lowercasing). > > So my question. Is there a better way? I'm not really happy with > this approach. Should I stop worrying and go and play my new ukulele? > Answers please. Go on, upload some ukulele playing somewhere. BTW, another solution is to push the pause command out to the shell: ----------------------- @setlocal enableextensions & (python -x %~f0 %* || pause) & goto :EOF import sys if len(sys.argv) > 1: sys.exit("this will pause") ----------------------- will pause only if the python program terminates with a non-zero exit code. This means messages from sys.exit will cause a pause as well as exceptions. -- http://mail.python.org/mailman/listinfo/python-list