В Python, как я могу получить доступ к пространству имен основного модуля из импортированного модуля? - PullRequest
18 голосов
/ 06 сентября 2010

В частности, мне нужно получить некоторые объекты и глобальные переменные из основного модуля в импортированном модуле. Я знаю, как найти эти вещи, когда родительский модуль хочет какую-то конкретную вещь от дочернего модуля, но я не могу понять, как двигаться в другом направлении.

Ответы [ 4 ]

13 голосов
/ 06 сентября 2010
import __main__

Но не делай этого.

10 голосов
/ 04 октября 2010

Ответ, который вы ищете:

import __main__

main_global1= __main__.global1

Однако, когда модулю module1 требуется материал из модуля __main__, тогда:

  • либомодуль __main__ должен предоставить все необходимые данные в качестве параметров для функции / класса module1,
  • , или вы должны поместить все, что нужно для совместного использования, в другой модуль и импортировать его как import module2 в__main__ и module1.
2 голосов
/ 06 сентября 2010

Я думаю, что это будет работать:

import sys    
main_mod = sys.modules['__main__']
1 голос
/ 06 сентября 2010

Не уверен, что это хорошая практика, но, возможно, вы могли бы передать нужные вам объекты и переменные в качестве параметров методам или классам, которые вы вызываете в импортированном модуле.

...