[ python-Bugs-1690103 ] trace module borks __file__
SourceForge.net
noreply at sourceforge.net
Sun Apr 15 20:39:32 CEST 2007
Bugs item #1690103, was opened at 2007-03-28 21:05
Message generated for change (Comment added) made by zseil
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=1690103&group_id=5470
Please note that this message will contain a full copy of the comment thread,
including the initial issue submission, for this request,
not just the latest update.
Category: Python Library
Group: None
Status: Open
Resolution: None
Priority: 5
Private: No
Submitted By: Skip Montanaro (montanaro)
Assigned to: Nobody/Anonymous (nobody)
Summary: trace module borks __file__
Initial Comment:
Stick this in a file (say, printfile.py):
print __file__
If I run it as "python printfile.py" using Python 2.4, 2.5 or 2.6 it prints as expected, e.g.:
% python ~/tmp/printfile.py
/Users/skip/tmp/printfile.py
If, however, I run it under control of the trace module I get something entirely different:
% python -m trace --count ~/tmp/printfile.py
/Users/skip/local/lib/python2.6/trace.py
% python -m trace --trace ~/tmp/printfile.py
--- modulename: threading, funcname: settrace
threading.py(70): _trace_hook = func
--- modulename: trace, funcname: <module>
<string>(1): --- modulename: trace, funcname: <module>
printfile.py(1): print __file__
/Users/skip/local/lib/python2.6/trace.py
Definitely looks buggy to me...
----------------------------------------------------------------------
>Comment By: Ziga Seilnacht (zseil)
Date: 2007-04-15 20:39
Message:
Logged In: YES
user_id=1326842
Originator: NO
Wouldn't it be better for trace.main() to call
Tracer.runctx() instead of Tracer.run()? That
way you could use a copy of __main__.__dict__
for locals and globals and overwrite the filename
there. Note that your solution would still report
the wrong filename if someone called tracer.main()
from his own main script.
----------------------------------------------------------------------
Comment By: Skip Montanaro (montanaro)
Date: 2007-03-28 22:38
Message:
Logged In: YES
user_id=44345
Originator: YES
Hmmm... Maybe not so hard after all. See attached diff. Does anyone see
a problem with simply overwriting the trace module's __file__ attribute?
File Added: trace.diff
----------------------------------------------------------------------
Comment By: Skip Montanaro (montanaro)
Date: 2007-03-28 22:01
Message:
Logged In: YES
user_id=44345
Originator: YES
I believe this is because the trace module calls execfile()
to run the file. I'm not sure if there's an easy fix for
this problem.
----------------------------------------------------------------------
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=1690103&group_id=5470
More information about the Python-bugs-list
mailing list