Parece que ya hay algunas preguntas sobre la importación relativa en Python 3, pero después de analizar muchas de ellas, todavía no encontré la respuesta a mi problema. Así que aquí está la cuestión.
Tengo un paquete que se muestra a continuación
package/
__init__.py
A/
__init__.py
foo.py
test_A/
__init__.py
test.py
y tengo una sola línea en test.py:
from ..A import foo
ahora estoy en la carpeta de package
y ejecuto
python -m test_A.test
Recibí un mensaje
"ValueError: attempted relative import beyond top-level package"
pero si estoy en la carpeta principal de package
, por ejemplo, ejecuto:
cd ..
python -m package.test_A.test
todo esta bien.
Ahora mi pregunta es:
cuando estoy en la carpeta de package
, y ejecuto el módulo dentro del subpaquete test_A ya que test_A.test
, según mi entendimiento, ..A
sube solo un nivel, que todavía está dentro de la package
carpeta, por qué dice el mensaje beyond top-level package
. ¿Cuál es exactamente la razón que causa este mensaje de error?