Начинающий Python здесь, поэтому я приношу свои извинения, если у этого вопроса есть простой ответ. (Надеюсь, что да.)
Я работаю над модулем python - плагином для более крупной программы. Я пытаюсь разработать модуль с помощью Eclipse IDE (с pydev), что означает, что мне нужно иметь возможность запускать этот модуль автономно, т.е. Не как плагин из более крупной программы.
Я на самом деле разбирал много волосатых деталей этого сам по себе, в основном из-за создания своего рода "упряжи", который запускает плагин из моей среды IDE таким образом, который имитирует (с точки зрения плагина) начиная с его реальной операционной среды.
Но одна вещь ускользает от меня. Когда модуль запускается изнутри "реальной" среды, он каким-то образом имеет определенное имя (назовите его "Боб" ), уже определенное в его результатах dir(). Когда я запускаю его в своей собственной среде, "Боб" не появляется в каталоге dir(), если я не загружаю его вручную.
Естественно, если я написал код для загрузки "Боба" вручную, чтобы плагин работал в моей среде IDE, что мешает плагину, когда он работает "по-настоящему". Мне нужна помощь: Как я могу запустить мой плагин (через мой пусковой узел) с уже загруженным "Бобом"?
Наивно, я как бы надеюсь, что смогу "заставить" плагин каким-то образом импортировать "Боб" , фактически не добавив "import Bob" к самому плагину. Но я открыт для предложений по лучшему пути...?
Предположительно, когда вы запускаете его "автономно" в Eclipse (или "автономно" без Eclipse, если на то пошло, так же, как "python foobar.py" в командной строке), ваш модуль __name__
global переменная имеет значение '__main__'
(если модуль импортируется, вместо этого значение глобальной переменной будет 'foobar'
- или, тем не менее, имя модуля).
Итак, просто
if __name__ == '__main__':
import Bob
и вы можете импортировать Боба, когда ваш модуль запускается автономно, без какого-либо плохого эффекта, когда ваш модуль вместо этого получает import
ed.