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してみる、でいいじゃんって話があって、それで良いような気もしてきた