Cómo resolver “ValueError: bash 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: bash 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 principal en él.

Escuché que si tuviera el archivo .py ‘/pkg/start.py’, por ejemplo, que haya llamado a mi módulo foo1, entonces funcionarán dos puntos. Sin embargo, ¿hay alguna forma de llamar a foo2 desde foo1 directamente?

Me parece que sin agregar pkg a mi PATH es imposible importar módulos de sub2 en sub1. Aquí está la explicación de por qué:

Las importaciones relativas utilizan el atributo de nombre de un módulo para determinar la posición de ese módulo en la jerarquía de paquetes. Si el nombre del módulo no contiene ninguna información de paquete (por ejemplo, está configurado como ‘ principal ‘), las importaciones relativas se resuelven como si el módulo fuera un módulo de nivel superior, independientemente de dónde se encuentre el módulo en el sistema de archivos.

Aquí está el sitio web oficial de python, donde se explica