在Python中,如何从导入模块访问主模块的命名空间?

22 投票
4 回答
9440 浏览
提问于 2025-04-16 03:44

具体来说,我需要在一个被导入的模块中访问一些对象和全局变量,这些东西是在主模块里的。我知道当父模块想从子模块获取某些特定的东西时,怎么去找到它们,但我就是搞不清楚怎么反过来去访问。

4 个回答

2

我觉得这样做应该可以:

import sys    
main_mod = sys.modules['__main__']
11

你想要的答案是:

import __main__

main_global1= __main__.global1

不过,每当一个模块 module1 需要从 __main__ 模块获取东西时,就要注意:

  • 要么 __main__ 模块应该把所有需要的数据作为参数传给 module1 的函数或类,
  • 要么你应该把所有需要共享的内容放在另一个模块里,然后在 __main__module1 中都用 import module2 来引入它。
15
import __main__

但是不要这样做。

撰写回答