我在python中有一個'thing'的名字。我想檢查這個'東西'是否是一個模塊。我可以用下面的代碼:有沒有更好的方法來確定是python中的一個模塊
mod = eval(module_name)
print inspect.ismodule(mod)
我不喜歡調用eval的想法。有沒有更好的方法從module_name(字符串)獲取到實際的模塊對象?
我在python中有一個'thing'的名字。我想檢查這個'東西'是否是一個模塊。我可以用下面的代碼:有沒有更好的方法來確定是python中的一個模塊
mod = eval(module_name)
print inspect.ismodule(mod)
我不喜歡調用eval的想法。有沒有更好的方法從module_name(字符串)獲取到實際的模塊對象?
剛剛嘗試集結在__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'
雖然find_module是一個更好的解決方案,但感謝提醒我關於'__import__'。我只是將'exec('import%s'替換爲'%var')。 – raylu
import datetime
from types import ModuleType
print type(datetime) == ModuleType
編輯:對不起,誤解了這個問題。 「事物的名稱」不是這個例子使用的。
更好的是,忘記__import__
'它只是看看它是否存在。 :)
現在,我不知道這是否實際上更快,但是這是我會做的。無論如何,__import__
的核心使用imp.find_module()
。
import imp
try:
imp.find_module('module')
except ImportError:
import sys
sys.exit('No such module')
你是什麼意思的「事物的名稱」。你有一個字符串是模塊名稱嗎?你有一個變量,並且想檢查變量是否是一個模塊?澄清,請。 –