有没有更好的方法来确定某些东西是python中的模块

时间:2011-07-10 09:49:16

标签: python introspection

我在python中有一个'thing'的名字。我想检查这个“东西”是否是一个模块。我可以使用以下代码完成:

mod = eval(module_name)
print inspect.ismodule(mod)

我不喜欢调用eval的想法。有没有更好的方法从module_name(一个字符串)到实际的模块对象?

4 个答案:

答案 0 :(得分:3)

更好的是,忘掉它__import__,看看它是否存在。 :)

现在,我不知道这实际上是否更快,但这就是我要做的。无论如何,核心__import__使用imp.find_module()

import imp
try:
    imp.find_module('module')
except ImportError:
    import sys
    sys.exit('No such module')

答案 1 :(得分:2)

尝试内置__import__功能:

>>> __import__('aaa')

Traceback (most recent call last):
  File "<pyshell#5>", line 1, in <module>
    __import__('aaa')
ImportError: No module named aaa
>>> __import__('os')
<module 'os' from 'C:\Python26\lib\os.pyc'>

所以你的代码看起来像下一个:

try:
    __import__(mod_name)
    print 'Such a module exists'
except ImportError:
    print 'No such module'

答案 2 :(得分:0)

import datetime
from types import ModuleType

print type(datetime) == ModuleType

编辑:对不起,误读了这个问题。 “事物的名称”不是这个例子所使用的。

答案 3 :(得分:-1)

在'thing'上使用dir()

dir(something)