有没有办法在主文件导入的其他模块中使用从主文件导入的模块?
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 rich
在main.py
中将变量rich
定义为全局变量,但是rich
在module.py
中未定义为全局变量,如每个模块都有不同的全局命名空间。
因此,如果您需要从 module.py
中调用 rich
,则必须从 sys.modules
中调用它,如下所示:
import sys
def print2(x)
if 'rich' in sys.modules:
sys.modules['rich'].print(x)
else:
print(x)
我正在尝试创建一个模块以适应文件中的其他模块,其中 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 rich
在main.py
中将变量rich
定义为全局变量,但是rich
在module.py
中未定义为全局变量,如每个模块都有不同的全局命名空间。
因此,如果您需要从 module.py
中调用 rich
,则必须从 sys.modules
中调用它,如下所示:
import sys
def print2(x)
if 'rich' in sys.modules:
sys.modules['rich'].print(x)
else:
print(x)