有没有办法在主文件导入的其他模块中使用从主文件导入的模块?

Is there a way to use a module imported from the main file in other modules that are imported by the main file?

我正在尝试创建一个模块以适应文件中的其他模块,其中 name == 'main' 给出 True。 假设我有一个模块,如果它是导入的,则打印带有 rich 的文本,如果没有导入,则打印文本。 我不想从模块中导入 rich,相反我想做这样的事情:

module.py:

    import sys

    def print2(x)
        if 'rich' in sys.modules:
            rich.print(x)
        else:
            print(x)

main.py:

    import rich
    import test2

    test2.print2('Hello world')

但这确实有效。 有解决办法吗?

import richmain.py中将变量rich定义为全局变量,但是richmodule.py中未定义为全局变量,如每个模块都有不同的全局命名空间。 因此,如果您需要从 module.py 中调用 rich,则必须从 sys.modules 中调用它,如下所示:

import sys

def print2(x)
        if 'rich' in sys.modules:
            sys.modules['rich'].print(x)
        else:
            print(x)