如何确定正在导入的模块中导入模块的名称。我有部分解决方案,但不是完整的解决方案。
代码是: A.py
import B
if __name__ == '__main__':
print 'This a test'
B.py
import sys
import C
if sys.argv[0] == 'A':
doSomething()
此时,我已经准备就绪,因为在模块 B 中,我知道调用导入的主要名称,在本例中是 A。但是,在 B 中,请求导入 C,它是在C里面我想知道B是否导入了C?这是怎么做到的?
最佳答案
sys.argv[0]
不是执行 import
时的模块名称。这是可执行文件的名称。
另一方面,在 Python 模块内部 __name__
等于 a) 如果它是通过导入执行的模块名称,b) 如果它作为脚本执行则为 "__main__"
。
模块不“知道”谁执行了import
(没有“parent”属性或类似的东西)。使用不同的函数定义您的行为,并从不同的模块中调用它们。
关于python确定导入模块的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13803219/