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?