python - xlabel - plotly title
ImportaciĆ³n relativa multinivel (2)
Debe importar foobar
desde la carpeta top
de la top
:
import top.foo.bar.foobar
Esto le dice a Python que top
es el paquete de nivel superior. Las importaciones relativas solo son posibles dentro de un paquete.
Importación relativa multinivel
Tengo la siguiente estructura de carpetas
top/
__init__.py
util/
__init__.py
utiltest.py
foo/
__init__.py
foo.py
bar/
__init__.py
foobar.py
Quiero acceder desde foobar.py
al módulo utiltest.py
. Intenté seguir una importación relativa, pero esto no funciona: from ...util.utiltest import *
Siempre obtengo ValueError: Attempted relative import beyond toplevel package
¿Cómo hacer semejante importación multilínea?
Me doy cuenta de que esta es una pregunta antigua, pero creo que la respuesta aceptada probablemente ignora el problema principal con el código del interrogador. No está mal, estrictamente hablando, pero da una sugerencia de que solo por casualidad se resuelve el problema real.
El problema real es que el archivo foobar.py
en top/foo/bar
se está ejecutando como un script. Cuando se intenta una importación relativa (¡correcta!), Falla porque el intérprete de Python no entiende la estructura del paquete.
La mejor solución para esto es ejecutar foobar.py
no por nombre de archivo, sino usar el indicador -m
al intérprete para indicarle que ejecute el módulo top.foo.bar.foobar
. De esta manera, Python sabrá el módulo principal que está cargando en un paquete, y sabrá exactamente dónde se refiere la importación relativa.