Python: импортировать содержащий пакет

В модуле, находящемся внутри пакета, у меня есть необходимость использовать функцию, определенную в __init__.py этого пакета. как я могу импортировать пакет внутри модуля, который находится внутри пакета, поэтому я могу использовать эту функцию?

Импорт __init__ внутри модуля не будет импортировать пакет, а вместо этого модуль с именем __init__ , приводящий к двум копиям вещей с разными именами …

Есть ли питонический способ сделать это?

5 Solutions collect form web for “Python: импортировать содержащий пакет”

Кроме того, начиная с Python 2.5, возможен относительный импорт. например:

 from . import foo 

Цитата из http://docs.python.org/tutorial/modules.html#intra-package-references :


Начиная с Python 2.5, в дополнение к неявным относительным импортам, описанным выше, вы можете написать явные относительные импорты с формой импорта имени импорта import. Эти явные относительные импорты используют ведущие точки для указания текущих и родительских пакетов, участвующих в относительном импорте. Например, из окружающего модуля вы можете использовать:

 from . import echo from .. import formats from ..filters import equalizer 

Это точно не отвечает на ваш вопрос, но я собираюсь предложить вам переместить функцию за пределы файла __init__.py и в другой модуль внутри этого пакета. Затем вы можете легко импортировать эту функцию в свой другой модуль. Если вы хотите, вы можете иметь оператор импорта в файле __init__.py который будет импортировать эту функцию (когда пакет будет импортирован).

Если пакет называется testmod и ваш файл инициализации, следовательно, testmod/__init__.py а ваш модуль внутри пакета является submod.py то из файла submod.py вы должны просто иметь возможность сказать import testmod и использовать все, что хотите. определенных в testmod.

В Django файл manage.py имеет from django.core.management import execute_manager , но execute_manager не является модулем. Это функция в модуле __init__.py каталога management .

Я не совсем уверен, что это такое, но это может решить вашу проблему «другого имени»:

 import __init__ as top top.some_function() 

Или, может быть?:

 from __init__ import some_function some_function() 
  • Как импортировать модуль в каталог ноутбуков jupyter в ноутбуки в нижних каталогах?
  • Python: перезагрузить компонент Y, импортированный с помощью «from X import Y»?
  • python: from x import y изменяет предыдущий результат импорта
  • celery-django не может найти настройки
  • Python: импорт «файла импорта»
  • ImportError: Нет модуля с именем «html.parser»; 'html' не является пакетом (python3)
  • ImportError: Нет модуля с именем xlwt
  • Следует ли избегать импорта подстановочных знаков?
  • Как python находит файл модуля, если оператор import содержит только имя файла?
  • Python: импорт другого модуля с тем же именем
  • Ошибка импорта Python: «Нет модуля с именем» существует
  • Python - лучший язык программирования в мире.