Я знаю, что есть много вопросов о тех же проблемах с импортом в 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()