On 9/30/05, Thomas Heller <[EMAIL PROTECTED]> wrote: > On several occasions I have seen tracebacks in my code pointing to PIL's > __init__.py file. That is strange, because I have installed PIL but it > is used nowhere. > > Finally I traced it down to a problem in the linecache code, which tries > to be smart in up updatecache function. When os.stat() on the filename > fails with os.error, it walks along sys.path and returns the first file > with a matching basename. This *may* make sense for toplevel modules, > but never for modules in packages. > > So, if the traceback's stack contains an entry for a non-existing file > (for example because the .py file for a .pyc file is no longer present), > linecache returns absolute garbage. > > Example, on my system (the \a\b\c\__init__.py file doesn't exist): > > C:\>python -c "import linecache; print > linecache.getlines(r'\a\b\c\__init__.py')" > ['#\n', '# The Python Imaging Library.\n', > '# $Id: //modules/pil/PIL/__init__.py#2 $\n', '#\n', > '# package placeholder\n', '#\n', '# Copyright (c) 1999 by Secret Labs AB.\n', > '#\n', '# See the README file for information on usage and redistribution.\n', > '#\n', '\n', '# ;-)\n'] > C:\> > > The bug is present in 2.3, 2.4, and current CVS.
Probably my fault (I wrote linecache, 13 years ago (before Python had packages!). But looking at the code I don't understand why this is; there's no code to descend into subdirectories of directories found on sys.path. I wonder if the problem isn't on PIL's end, which puts the PIL directory on sys.path? Anyway, don't hesitate to suggest a patch on sourceforge -- python-dev really isn't the forum for further discussion of this issue. -- --Guido van Rossum (home page: http://www.python.org/~guido/) _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com