У меня есть следующая проблема с моим проектом, помогите мне, пожалуйста! Вот структура моего пакета:
/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?