是否可以在Python中的“导入模块”中获取“导入模块”?

时间:2012-02-02 02:04:55

标签: python

对于导入的模块,是否可以获取导入模块(名称)?我想知道检查是否可以实现它

4 个答案:

答案 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