Python не может импортировать один из двух идентичных классов в одном каталоге - PullRequest
0 голосов
/ 02 апреля 2020

При запуске скрипта python я пытаюсь импортировать два разных класса из двух разных скриптов из одного каталога. Первый работает, второй не работает, по причинам, которые я не смог выяснить.

Я извлек весь полезный код из импортированных скриптов и сделал их идентичными, за исключением имен классов, которые нужно попробовать чтобы ограничить число переменных во время тестирования решений.

Я следовал этим двум руководствам, когда возникали проблемы

Я уверен, что это простое исправление, но я пока не смог понять это.

Спасибо за вашу помощь.


Python Версия

Python 3.6.9 :: Anaconda, Inc.

Структура папок

  • MSAs
    • __init__.py
    • lexer.py
    • main.py
    • parser.py

Содержимое файла

__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()

Запуск сценария из папки MSAs

msas> python main.py

ImportError: cannot import name 'Parser'


Вещи, которые inte rnet сказал мне попробовать, и их результаты

Мне кажется, что некоторые из них - здравый смысл, что они не работают но я пытался исчерпать все свои варианты.

префикс имени модуля с ., если не используется подкаталог:

No module named '__main__.lexer'; '__main__' is not a package

изменить на import parser.Parser

No module named 'parser.Parser'; 'parser' is not a package

изменить на from . import Parser

AttributeError: module 'parser' has no attribute 'Parser'

вставить рабочий файл непосредственно в sys.path

* 11 14 *ImportError: cannot import name 'Parser'

Переключение порядка операторов импорта

ImportError: cannot import name 'Parser'


1 Ответ

1 голос
/ 02 апреля 2020

parser - это модуль в Python * стандартной библиотеке , поэтому я считаю, что ваш код пытается импортировать Parser из этого файла, а не из вашего parser.py файла. Поскольку этот объект не существует, вы получаете ImportError, который вы видите.

...