Python 错误:AttributeError:“模块”对象没有属性“heappush”

Posted

技术标签:

【中文标题】Python 错误:AttributeError:“模块”对象没有属性“heappush”【英文标题】:Python error : AttributeError: 'module' object has no attribute 'heappush' 【发布时间】:2017-01-31 00:17:55 【问题描述】:

我正在尝试一些涉及 Python 中的多处理功能的简单程序。

代码如下:

from multiprocessing import Process, Queue

def print_square(i):
  print i*i

if __name__ == '__main__':
  output = Queue()
  processes = [Process(target=print_square,args=(i,)) for i in range(5)]

  for p in processes:
    p.start()

  for p in processes:
    p.join()

但是,这会给出错误消息AttributeError: 'module' object has no attribute 'heappush'. 执行脚本时的完整输出如下:

回溯(最近一次通话最后): 文件“parallel_3.py”,第 15 行,在 输出 = 队列() 文件“C:\Users\abc\AppData\Local\Continuum\Anaconda2\lib\multi processing\__init__.py",第 217 行,在队列中 从 multiprocessing.queues 导入队列 文件“C:\Users\abc\AppData\Local\Continuum\Anaconda2\lib\multi processing\queues.py",第 45 行,在 从队列导入空,满 文件“C:\Users\abc\AppData\Local\Continuum\Anaconda2\lib\Queue .py”,第 212 行,在 类优先队列(队列): 文件“C:\Users\abc\AppData\Local\Continuum\Anaconda2\lib\Queue .py”,第 224 行,在 PriorityQueue 中 def _put(self, item, heappush=heapq.heappush): AttributeError:“模块”对象没有属性“heappush”

如果注释了 output=Queue() 语句,则代码编译良好。 什么可能导致此错误?

【问题讨论】:

这对我来说很好用。您的环境似乎有问题。如果你没有得到更好的答案,也许你应该考虑重新安装你的 python 发行版。 你有没有 heapq.py 隐藏 Python 的地方? 我尝试在我的大学机器上运行它,效果很好。正如你所说,似乎是一个环境问题。但是我在两个系统中都安装了 python,并且想不出两者之间的任何区别,这可能是导致问题的原因。关于我应该从哪里开始看的任何指示? 不,其他地方没有 heapq.py。 【参考方案1】:

你的文件名应该是包名。更改为另一个文件名,例如heap,它将起作用。

【讨论】:

以上是关于Python 错误:AttributeError:“模块”对象没有属性“heappush”的主要内容,如果未能解决你的问题,请参考以下文章

Python 多处理库错误(AttributeError:__exit__)

如何修复python2.7中的“AttributeError:'module'对象没有属性'storage'”错误

Python多处理错误:AttributeError:模块'__main__'没有属性'__spec__'

AttributeError:“WebElement”对象没有属性“单击”错误尝试使用 Selenium Python 单击链接

python脚本AttributeError: module 'xxxx' has no attribute 'xxxxx'错误解决办法

python提示错误“AttributeError: 'module' object has no attribute 'Tk'”是啥原因?