在Python中,如何从导入模块访问主模块的命名空间?
具体来说,我需要在一个被导入的模块中访问一些对象和全局变量,这些东西是在主模块里的。我知道当父模块想从子模块获取某些特定的东西时,怎么去找到它们,但我就是搞不清楚怎么反过来去访问。
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__
但是不要这样做。