Я знаю, что в Python есть много вопросов о тех же проблемах импорта, но, похоже, никто не смог предоставить четкий пример правильного использования.
Допустим, у нас есть пакет mypackage
с двумя модулями foo
и bar
. Внутри foo
нам нужно иметь доступ к bar
.
Поскольку мы все еще разрабатываем его, mypackage
отсутствует в sys.path
.
Мы хотим иметь возможность:
mypackage.foo
foo.py
как сценарий и выполнять примеры использования или тесты из раздела __main__
. Как нужно сделать импорт в foo.py, чтобы быть уверенным, что он будет работать во всех этих случаях.
# mypackage/__init__.py
...
# mypackage/foo/__init__.py
...
# mypackage/bar.py
def doBar()
print("doBar")
# mypackage/foo/foo.py
import bar # fails with module not found
import .bar #fails due to ValueError: Attempted relative import in non-package
def doFoo():
print(doBar())
if __name__ == '__main__':
doFoo()