Вот официальный сайт 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?

Ответы на вопрос(1)

Ваш ответ на вопрос