Python no puede importar una de dos clases idénticas int el mismo directorio

chriszumberge:

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 MSAscarpeta

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'


jfaccioni:

parseres un módulo de Python en la biblioteca estándar , así que creo que el código está tratando de importar Parserdesde ese archivo, no de su parser.pyarchivo. Dado que no existe ese objeto, se obtiene la ImportErrorves.

Supongo que te gusta

Origin http://10.200.1.11:23101/article/api/json?id=392437&siteId=1
Recomendado
Clasificación