Python编写A*搜索算法时遇ModuleNotFoundError: No module named 'Queue'问题
解决Python中PriorityQueue导入报错的问题
嘿,我之前也碰到过一模一样的问题!你这是不小心踩了Python2和Python3模块命名差异的坑啦~
问题根源
在Python2里,优先级队列模块的名字是大写的Queue,但到了Python3,官方把这个模块名改成了全小写的queue。你现在用的应该是Python3环境,所以导入大写的Queue自然会报ModuleNotFoundError。
正确的导入方式
给你几种靠谱的导入写法,选一种用就行:
- 直接导入整个模块:
import queue # 初始化优先级队列 pq = queue.PriorityQueue() - 直接导入PriorityQueue类:
from queue import PriorityQueue # 初始化优先级队列 pq = PriorityQueue()
简单使用示例
给你个小例子,看看怎么用这个队列存A*算法里的节点:
from queue import PriorityQueue # 初始化队列 pq = PriorityQueue() # 往队列里放元素,优先级在前(数字越小优先级越高),后面是你的节点数据 pq.put((1, "节点1")) pq.put((0, "节点0")) pq.put((2, "节点2")) # 取出元素(按优先级顺序) while not pq.empty(): priority, node = pq.get() print(f"优先级: {priority}, 节点: {node}")
这样你就可以把A*里的节点带着它们的f值(优先级)放进队列里,队列会自动帮你按优先级排序啦~
内容的提问来源于stack exchange,提问作者Wahaj Mubeen
相关产品推荐
相关产品推荐

