python确定导入模块的名称

标签 python multithreading import names

如何确定正在导入的模块中导入模块的名称。我有部分解决方案,但不是完整的解决方案。

代码是: 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/

相关文章:

python - Python 中 OpenCV checkVector 的断言错误

python - 从多行极坐标系中减去单行极坐标系的值

multithreading - 如何在 Perl 中处理具有依赖关系的调度线程?

.net - 如果安装了Visual Studio,则WPF应用程序将不会关闭

mysql - 在 Yii2 中导入 Excel

python - 按钮下的 PyGame 文本

java - 通过 REST 从 Java 作为操作系统进程或微服务调用 Python 机器学习服务

c++ - Cuda 中的多个 GPU - 以前可以工作的代码,但现在不行了

javascript - Typescript - 导入 Express 不起作用

intellij-idea - IntelliJ IDEA CE for 和 FTC Robotics Simulator 中的导入问题