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

时间:2010-09-06 00:04:04

标签: python namespaces module

具体来说,我需要从导入模块中的主模块获取一些对象和全局变量。我知道当父模块想要从子模块中获取某些特定内容时如何找到这些东西,但我无法弄清楚如何向另一个方向前进。

4 个答案:

答案 0 :(得分:13)

import __main__

但不要这样做。

答案 1 :(得分:9)

您正在寻找的答案是:

import __main__

main_global1= __main__.global1

但是,只要模块module1需要来自__main__模块的内容,那么:

  • __main__模块应该提供所有必要的数据作为module1函数/类的参数,
  • 或者您应该将需要在另一个模块中共享的所有内容放入其中,并在import module2__main__中将其作为module1导入。

答案 2 :(得分:3)

我认为这样可行:

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

答案 3 :(得分:1)

不确定这是不是一个好习惯,但也许你可以将你需要的对象和变量作为参数传递给你在导入模块中调用的方法或类。