Check if a parameter is a Python module?
How can I (pythonically) check if a parameter is a Python module? There's no type like module or package.
>>> os
<module 'os' from '/usr/lib/python2.6/os.pyc'>
>>> isinstance(os, module)
Traceback (most recent call last):
File "/usr/lib/gedit-2/plugins/pythonconsole/console.py", line 290, in __run
r = eval(command, self.namespace, self.namespace)
File "<string>", line 1, in <module>
NameError: name 'module' is not defined
I can do this:
>>> type(os)
<type 'module'>
But what do I compare it to? :(
I've made a simple module to quickly find methods in modules and get help texts for them. I supply a module var and a string to my method:
def gethelp(module, sstring):
# here i need to check if module is a module.
for func in listseek(dir(module), sstring):
help(module.__dict__[func])
Of course, this will work even if module = 'abc': then dir('abc') will give me the list of methods for string object, but I don't need that.
Solution 1:
from types import ModuleType
isinstance(obj, ModuleType)
Solution 2:
>>> import inspect, os
>>> inspect.ismodule(os)
True
Solution 3:
This seems a bit hacky, but:
>>> import sys
>>> import os
>>> type(os) is type(sys)
True