我正在处理一个项目,由于某种原因,我遇到了一个无法修复的错误。
错误是:
`from parser import WorldParser`
`ImportError: cannot import name WorldParser`
我正在使用Pycharm,我试图使用Pycycle来查找我是否有导入循环,但它没有找到,还尝试手动查找循环,但我没有找到任何
程序结构如下:
project folder contains:
agent.py
graph.py
parser.py
simulation.py
state.py
utils.py
现在我将详细说明每个文件的导入。
-----agent.py----
from utils import operation_dec,get_path_from_to
-----agent.py----
-----graph.py----
none
-----graph.py----
-----parser.py----
from graph import Vertex, Edge, UndirectedGraph
from state import WorldState
from utils import create_map_args, get_path_from_to
-----parser.py----
-----simulation.py----
from parser import WorldParser
from beautifultable import BeautifulTable
from agent import GreedyAgent, HumanAgent, VandalAgent
from state import WorldState
from utils import InfoObject
-----simulation.py----
-----state.py----
from beautifultable import BeautifulTable
-----state.py----
-----utils.py----
from heapq import *
-----utils.py----
感谢您的帮助!
您需要从更改导入语句
from graph import Vertex, Edge, UndirectedGraph
from state import WorldState
from utils import create_map_args, get_path_from_to
到以下位置:
from .graph import Vertex, Edge, UndirectedGraph
from .state import WorldState
from .utils import create_map_args, get_path_from_to
当您引用同一目录中的模块时。点告诉Python导入来自同一目录/包中的另一个模块。如果在import语句中去掉句点,Python会认为您引用的是全局包,而不是本地包。请查看Python的官方文档以获得更详细的解释。
编辑:我忘了提一下,您应该在目录中添加一个__init__.py
文件,以向Python指示该目录是Python包。