ImportError: 无法导入 'Parser' 名称

7

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

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重命名为syntaxtree.py,因为Python标准库中已经存在ast.py。但是改名后仍然出现了相同的结果。非常感谢您提供的任何形式的帮助!


2
parser.py 重命名为其他名称。它是 Python 中的内置模块。 - Ajay Dabas
@AjayDabas 是否可能覆盖该模块? - Real Donald Trump
1
只需在您的目录中创建一个 __init__.py 文件,告诉 Python 从当前目录导入即可。 - Ajay Dabas
1个回答

1

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接