我在python中有一个'thing'的名字。我想检查这个“东西”是否是一个模块。我可以使用以下代码完成:
mod = eval(module_name)
print inspect.ismodule(mod)
我不喜欢调用eval的想法。有没有更好的方法从module_name(一个字符串)到实际的模块对象?
答案 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)