pythonであるライブラリが入っているかを調べたい

imp.module_find(module_name)で調べられるっぽい。*1
例えば、python2.5のhashlibが入ってるかを調べてみる。

[07-18 01:09:43 suzuki@suzuki-shinichirou-no-MacBook-Air /Users/suzuki]
python2.5
Python 2.5.4 (r254:67916, Jun 24 2010, 21:47:25) 
[GCC 4.2.1 (Apple Inc. build 5646)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import imp
>>> imp.find_module('hashlib')
(<open file '/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/hashlib.py', mode 'U' at 0x1a0458>, '/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/hashlib.py', ('.py', 'U', 1))
>>>

これ調べてるときについでに教わったこと

dir()を引数なしで使うと今インポートされているモジュール名も出てくる
>>> dir()
['__builtins__', '__doc__', '__name__', 'imp']
>>> 
sys.builtin_module_namesでbuiltinのモジュール名が出てくる
>>> sys.builtin_module_names
('__builtin__', '__main__', '_ast', '_codecs', '_sre', '_symtable', '_types', 'errno', 'exceptions', 'gc', 'imp', 'marshal', 'posix', 'pwd', 'signal', 'sys', 'thread', 'xxsubtype', 'zipimport')
>>> 
なんか良くわかってないけどsys.modules
>>> sys.modules
{'copy_reg': <module 'copy_reg' from '/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/copy_reg.pyc'>, '__main__': <module '__main__' (built-in)>, 'site': <module 'site' from '/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site.pyc'>, '__builtin__': <module '__builtin__' (built-in)>, 'encodings': <module 'encodings' from '/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/encodings/__init__.pyc'>, 'encodings.encodings': None, 'posixpath': <module 'posixpath' from '/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/posixpath.pyc'>, 'errno': <module 'errno' (built-in)>, 'encodings.codecs': None, 'imp': <module 'imp' (built-in)>, 'os.path': <module 'posixpath' from '/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/posixpath.pyc'>, '_codecs': <module '_codecs' (built-in)>, 'stat': <module 'stat' from '/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/stat.pyc'>, 'zipimport': <module 'zipimport' (built-in)>, 'warnings': <module 'warnings' from '/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/warnings.pyc'>, 'encodings.types': None, 'UserDict': <module 'UserDict' from '/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/UserDict.pyc'>, 'encodings.utf_8': <module 'encodings.utf_8' from '/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/encodings/utf_8.pyc'>, 'sys': <module 'sys' (built-in)>, 'codecs': <module 'codecs' from '/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/codecs.pyc'>, 'readline': <module 'readline' from '/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/lib-dynload/readline.so'>, 'types': <module 'types' from '/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/types.pyc'>, '_types': <module '_types' (built-in)>, 'signal': <module 'signal' (built-in)>, 'linecache': <module 'linecache' from '/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/linecache.pyc'>, 'posix': <module 'posix' (built-in)>, 'encodings.aliases': <module 'encodings.aliases' from '/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/encodings/aliases.pyc'>, 'exceptions': <module 'exceptions' (built-in)>, 'os': <module 'os' from '/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/os.pyc'>}
>>> 

いろいろ教えてくれた@takezo70ありがとう。

*1:importしてみる、でいいじゃんって話があって、それで良いような気もしてきた