Python 无法导入同一目录中两个相同 类 之一

Python cannot import one of two identical classes int the same directory

当 运行 一个 python 脚本时,我试图从同一目录的两个不同脚本导入两个不同的 classes。 第一个有效,第二个失败,原因我一直无法弄清楚。

我从导入的脚本中提取了所有有用的代码,并使它们除了 class 名称外完全相同,以便在我测试解决方案时尝试限制变量的数量。

问题发生时我一直在遵循这两个指南

我确定这是一个简单得让人麻木的修复程序,但我还没有弄明白。

感谢您的帮助。


Python版本

Python 3.6.9 :: Anaconda, Inc.

文件夹结构

文件内容

__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'


互联网告诉我尝试的事情及其结果

我觉得其中一些是常识,它们没有用,但我试图用尽我所有的选择。

prefix the module name with a . if not using a subdirectory:

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

change to import parser.Parser

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

change to from . import Parser

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

insert the working directly into sys.path

ImportError: cannot import name 'Parser'

切换导入语句的顺序

ImportError: cannot import name 'Parser'


parser 是 Python 的 standard library 中的一个模块,所以我相信您的代码试图从该文件导入 Parser,而不是从您的 parser.py 文件。由于该对象不存在,您将看到 ImportError