[issue4223] inspect.getsource doesn't work on functions imported from a zipfile

Jean-Paul Calderone report at bugs.python.org
Tue Oct 28 22:59:40 CET 2008


Jean-Paul Calderone <exarkun at divmod.com> added the comment:

Here is a transcript for a complete, self-contained, minimal reproduction:

exarkun at charm:~$ cd /tmp
exarkun at charm:/tmp$ mkdir zipimportbugexample
exarkun at charm:/tmp$ cd zipimportbugexample/
exarkun at charm:/tmp/zipimportbugexample$ mkdir foobar
exarkun at charm:/tmp/zipimportbugexample$ echo "def foo(): pass" >
foobar/__init__.py
exarkun at charm:/tmp/zipimportbugexample$ zip foobar.zip foobar
  adding: foobar/ (stored 0%)
exarkun at charm:/tmp/zipimportbugexample$ zip foobar.zip foobar/__init__.py 
  adding: foobar/__init__.py (stored 0%)
exarkun at charm:/tmp/zipimportbugexample$ rm -r foobar
exarkun at charm:/tmp/zipimportbugexample$ mkdir workingdirectory
exarkun at charm:/tmp/zipimportbugexample$ cd workingdirectory/
exarkun at charm:/tmp/zipimportbugexample/workingdirectory$ python
Python 2.5.2 (r252:60911, Jul 31 2008, 17:28:52) 
[GCC 4.2.3 (Ubuntu 4.2.3-2ubuntu7)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path.append('/tmp/zipimportbugexample/foobar.zip')
>>> import foobar, inspect
>>> inspect.getsource(foobar.foo)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.5/inspect.py", line 629, in getsource
    lines, lnum = getsourcelines(object)
  File "/usr/lib/python2.5/inspect.py", line 618, in getsourcelines
    lines, lnum = findsource(object)
  File "/usr/lib/python2.5/inspect.py", line 468, in findsource
    raise IOError('could not get source code')
IOError: could not get source code
>>>

_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue4223>
_______________________________________


More information about the Python-bugs-list mailing list