对于导入的模块,是否可以获取导入模块(名称)?我想知道检查是否可以实现它
答案 0 :(得分:3)
听起来你解决了自己的问题:使用inspect
模块。我会遍历堆栈,直到找到当前函数不是__import__
的帧。但我敢打赌,如果你告诉别人你为什么要这样做,他们会告诉你不要。
答案 1 :(得分:3)
即使你让它工作,这可能没有你想象的那么有用,因为后续导入只复制现有的引用,而不是再次执行模块。
答案 2 :(得分:2)
<强> foo.py 强>:
导入栏
<强> bar.py 强>:
import traceback
try:
filename,line_number,function_name,text = traceback.extract_stack()[-2]
print(filename,line_number,function_name,text)
except IndexError:
pass
运行foo.py会产生类似
的内容('/home/unutbu/pybin/foo.py', 4, '<module>', 'import bar')
答案 3 :(得分:1)
import inspect
result = filter(lambda v:inspect.ismodule(v), globals().values())
#result is a collection of all imported modules in the file, the name of any of which can be easily got by .__name__
#replace globals() with inspect.getmembers(wanted_module) if you want the result outside the wanted module