Cuando se ejecuta un script en Python, estoy intentando importar dos clases diferentes de dos guiones diferentes desde el mismo directorio. Los primeros se trabaja, la segunda falla, por razones que no han sido capaces de averiguar.
Tomé todo el código útil de los guiones importados y les hizo idénticos a excepción de los nombres de las clases para tratar de limitar el número de variables mientras se estaba probando soluciones.
Había estado siguiendo a lo largo de estas dos guías que se produjeron los problemas
Estoy seguro de que es una solución abrumadoramente simple, pero todavía no he sido capaz de entenderlo.
Gracias por tu ayuda.
La versión de Python
Python 3.6.9 :: Anaconda, Inc.
Estructura de carpetas
MSAs
__init__.py
lexer.py
main.py
parser.py
Contenido del archivo
__init__.py
"""empty file"""
lexer.py
class Lexer():
def __init__(self):
self.hello = 'world'
parser.py
class Parser():
def __init__(self):
self.hello = 'world'
main.py
from lexer import Lexer
from parser import Parser
p = Parser()
Al ejecutar el script de la MSAs
carpeta
msas> python main.py
ImportError: cannot import name 'Parser'
Cosas internet mí para probar, y sus resultados contaron
Siento que algunos de éstos son de sentido común que no funcionaba, pero yo estaba tratando de agotar todas mis opciones.
prefijar el nombre del módulo con un .
si no se utiliza un subdirectorio:
No module named '__main__.lexer'; '__main__' is not a package
cambiar a import parser.Parser
No module named 'parser.Parser'; 'parser' is not a package
cambiar a from . import Parser
AttributeError: module 'parser' has no attribute 'Parser'
insertar el trabajo directamente en sys.path
ImportError: cannot import name 'Parser'
Cambiar el orden de las declaraciones de importación
ImportError: cannot import name 'Parser'
parser
es un módulo de Python en la biblioteca estándar , así que creo que el código está tratando de importar Parser
desde ese archivo, no de su parser.py
archivo. Dado que no existe ese objeto, se obtiene la ImportError
ves.