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 packagey 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, ..Asube solo un nivel, que todavía está dentro de la packagecarpeta, por qué dice el mensaje beyond top-level package. ¿Cuál es exactamente la razón que causa este mensaje de error?