python 3.x - example - ValueError: intento de importación relativa más allá del paquete de nivel superior
python import module from path (1)
Python 3 cambió el sistema de importación, por lo que cada vez que desee un módulo que esté alrededor del módulo en el que está trabajando, necesita importaciones relativas (a menos que ensucie con PYTHON_PATH
o sys.path
).
El uso correcto aquí debe ser
from .subpkg import a
Cuando trabajas con IDLE, tienes un entorno totalmente diferente. Por lo tanto, puede agregar la ubicación actual a su ruta para que las importaciones vuelvan a funcionar.
tratar:
sys.path.insert(0, '''')
Puede ser raro, pero es para un bien mayor.
PD: Si esto último no funciona, no tengo un entorno IDLE en este momento, probablemente se deba a que el directorio de trabajo está mal configurado.
Pruebe esta respuesta en su lugar: https://stackoverflow.com/a/17361545/754991
Estaba jugando el sistema de importación de Python para comprender mejor cómo funciona, y encontré otro problema. Tengo la siguiente estructura
pkg/
__init__.py
c.py
d.py
subpkg/
__init__.py
a.py
b.py
Dentro de a.py
tengo el siguiente código:
from . import b
from .. import d
Y dentro de c.py
tengo lo siguiente:
import subpkg.a
Ahora recibo el siguiente error:
ValueError: intento de importación relativa más allá del paquete de nivel superior
Pero por que ¿Cómo puedo resolverlo? Estoy ejecutando c.py
desde el IDLE, y pkg
debe considerarse un paquete, ya que tiene el archivo __init__.py
.
La primera importación funciona bien, pero lo siguiente no funciona:
from .. import d
Porque estoy intentando importar algo de un paquete padre, pero aparentemente no puedo, por alguna extraña razón.