ImportError:无法导入名称“解析器”

时间:2020-01-12 04:22:41

标签: python python-import

我有一堆模块。这些模块及其导入在下面列出:

ast.py:
    import enum
    from abc import ABC, abstractmethod
err.py:
    none
lexer.py:
    from token import TokenTag, Token
parser.py:
    from ast import *
    from err import UndeclaredIdentError, SyntaxError
    from token import TokenTag as Tag
    from type import Type
peep.py:
    from lexer import Lexer
    from parser import Parser
token.py:
    import enum
treewalker.py:
    from abc import ABC, abstractmethod
type.py:
    import enum
    from treewalker import TreeWalker

我尝试运行peep.py,但出现以下错误:

Traceback (most recent call last):
  File "peep.py", line 2, in <module>
    from parser import Parser
ImportError: cannot import name 'Parser'

我不明白为什么会出现ImportError,在上面的文件层次结构中找不到任何明显的循环依赖项。我做了一些研究,发现应该将模块ast.py重命名为语法tree.py,因为ast.py已经存在于Python的标准库中。重命名后,它产生了相同的结果。感谢您提供任何形式的帮助!

1 个答案:

答案 0 :(得分:1)

打开 parser.py 文件,并将from parser import Parser的代码更改为from .parser import Parser