If a certain module cannot be imported, this error is not caught and
warned about by pydoc, but will cause 'modules' to fail. This could be
considered a bug in the module but it would still be nice if 3rd party
modules cannot break pydoc. Example:
dennis@mirage:~$ python
Python 2.5.2 (r252:60911, Mar 12 2008, 13:36:25)
[GCC 4.2.3 (Ubuntu 4.2.3-2ubuntu4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> help()
Welcome to Python 2.5! This is the online help utility.
[... snip ...]
help> modules
Please wait a moment while I gather a list of all available modules...
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.5/site.py", line 342, in __call__
return pydoc.help(*args, **kwds)
File "/usr/lib/python2.5/pydoc.py", line 1649, in __call__
self.interact()
File "/usr/lib/python2.5/pydoc.py", line 1667, in interact
self.help(request)
File "/usr/lib/python2.5/pydoc.py", line 1683, in help
elif request == 'modules': self.listmodules()
File "/usr/lib/python2.5/pydoc.py", line 1804, in listmodules
ModuleScanner().run(callback)
File "/usr/lib/python2.5/pydoc.py", line 1855, in run
for importer, modname, ispkg in pkgutil.walk_packages():
File "/usr/lib/python2.5/pkgutil.py", line 125, in walk_packages
for item in walk_packages(path, name+'.', onerror):
[... snip -- the actual error isn't important ...]
OperationalError: no such table: falcon_configurationkey
>>>
I think it would be relatively easy to work around such bugs in 3rd
party modules by passing a callable to walk_packages that will give a
warning when an import fails instead of breaking.
|