Cómo resolver "ValueError: intento de importación relativa más allá del paquete de nivel superior"

Tengo el siguiente problema con mi proyecto, ¡ayúdame por favor! Aquí está la estructura de mi paquete:

/pkg

/pkg/__init__.py
/pkg/sub1/__init__.py
/pkg/sub2/__init__.py

/pkg/sub1/foo1.py
/pkg/sub2/foo2.py

Aquí está la implementación de foo1.py

from ..sub2 import foo2

def f():
    print("Hello!")

Cuando ejecuto foo1 me sale un error:ValueError: intento de importación relativa más allá del paquete de nivel superior.

Puedo resolverlo haciendo el siguiente ajuste:

import sys
import os
sys.path.append(os.path.abspath(os.path.pardir))

from sub2 import foo2
def f():
    print("Hello!")

Pero me pregunto si hay una manera de hacerlo sin importar sys y agregar el directorio padre en él.

Escuché que si tuviera el archivo .py '/pkg/start.py', por ejemplo, que llamó a mi módulo foo1, entonces dos puntos funcionarían. Sin embargo, ¿hay alguna forma de llamar a foo2 desde foo1 directamente?

Respuestas a la pregunta(1)

Su respuesta a la pregunta