Я знаю, что есть много вопросов о тех же проблемах с импортом в Python, но кажется, что никто не смог обеспечить ясный пример правильного использования.
Скажем, что у нас есть пакет mypackage
с двумя модулями foo
и bar
. Внутри foo
нам нужно иметь доступ к bar
.
Поскольку мы все еще его разрабатываем, mypackage
не находится в sys.path
.
Мы хотим иметь возможность:
- import
mypackage.foo
- запустите
foo.py
как script и выполните пример использования или тесты из раздела__main__
. - использовать Python 2.5
Как нам сделать импорт в 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()