Вот официальный сайт Python, где это объясняется
я есть следующая проблема с моим проектом, помогите мне, пожалуйста! Вот структура моего пакета:
/pkg
/pkg/__init__.py
/pkg/sub1/__init__.py
/pkg/sub2/__init__.py
/pkg/sub1/foo1.py
/pkg/sub2/foo2.py
Вот реализация foo1.py:
from ..sub2 import foo2
def f():
print("Hello!")
Когда я запускаю foo1, я получаю сообщение об ошибке:ValueError: попытка относительного импорта за пределы пакета верхнего уровня.
Я могу решить это, выполнив следующие настройки:
import sys
import os
sys.path.append(os.path.abspath(os.path.pardir))
from sub2 import foo2
def f():
print("Hello!")
Но мне интересно, есть ли способ сделать это без импорта sys и добавления в него родительского каталога.
Я слышал, что если бы у меня был файл .py '/pkg/start.py', например, который вызывал мой модуль foo1, то две точки работали бы. Однако есть ли способ напрямую вызвать foo2 из foo1?