«Предварительный импорт» переменной в модуль

1

Начинающий Python здесь, поэтому я приношу свои извинения, если у этого вопроса есть простой ответ. (Надеюсь, что да.)

Я работаю над модулем python - плагином для более крупной программы. Я пытаюсь разработать модуль с помощью Eclipse IDE (с pydev), что означает, что мне нужно иметь возможность запускать этот модуль автономно, т.е. Не как плагин из более крупной программы.

Я на самом деле разбирал много волосатых деталей этого сам по себе, в основном из-за создания своего рода "упряжи", который запускает плагин из моей среды IDE таким образом, который имитирует (с точки зрения плагина) начиная с его реальной операционной среды.

Но одна вещь ускользает от меня. Когда модуль запускается изнутри "реальной" среды, он каким-то образом имеет определенное имя (назовите его "Боб" ), уже определенное в его результатах dir(). Когда я запускаю его в своей собственной среде, "Боб" не появляется в каталоге dir(), если я не загружаю его вручную.

Естественно, если я написал код для загрузки "Боба" вручную, чтобы плагин работал в моей среде IDE, что мешает плагину, когда он работает "по-настоящему". Мне нужна помощь: Как я могу запустить мой плагин (через мой пусковой узел) с уже загруженным "Бобом"?

Наивно, я как бы надеюсь, что смогу "заставить" плагин каким-то образом импортировать "Боб" , фактически не добавив "import Bob" к самому плагину. Но я открыт для предложений по лучшему пути...?

Теги:
pydev

1 ответ

2
Лучший ответ

Предположительно, когда вы запускаете его "автономно" в Eclipse (или "автономно" без Eclipse, если на то пошло, так же, как "python foobar.py" в командной строке), ваш модуль __name__ global переменная имеет значение '__main__' (если модуль импортируется, вместо этого значение глобальной переменной будет 'foobar' - или, тем не менее, имя модуля).

Итак, просто

if __name__ == '__main__':
    import Bob

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

  • 0
    Я согласен. Это утверждение должно быть частью вашей привязи.
  • 0
    Ах да, это работает. Спасибо. Из любопытства, знаете ли вы, ребята, как "настоящей" программе (которая вызывает мой плагин) удается добавить имя в dir () плагина без явного его импорта? (Я предполагаю, что имя должно соответствовать модулю, переменной или классу ...)
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню