You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将Python2.7脚本迁移至3.6时遇'module is not callable'错误求助

嘿,别担心,这个问题在 Python 2 迁移到 Python 3 的过程中挺常见的,我来帮你理清楚!

先看你原来的 Python 2.7 代码:

from Queue import Queue
self.queue = Queue()

在 Python 2 里,Queue 是一个模块,里面的 Queue(首字母大写)才是你需要实例化的队列类。

到了 Python 3,这个模块的名字改成了小写的 queue,但里面的队列类依然叫 Queue(首字母大写)。你的错误在于:导入 queue 模块后,直接尝试调用 queue()——但 queue 是模块本身,不是可调用的类,所以才会抛出 module is not callable 错误!

给你两种正确的写法,任选其一就行:

方法一:直接导入 Queue 类(和你 Python 2 的写法最接近)

from queue import Queue
self.queue = Queue()

只是把模块名从大写的 Queue 改成了小写的 queue,逻辑和你原来的代码完全一致。

方法二:导入整个 queue 模块,通过模块访问 Queue 类

import queue
self.queue = queue.Queue()

这里要注意是 queue.Queue(),而不是 queue()——前者是调用模块里的队列类创建实例,后者是错误地把模块当成函数调用了。

简单总结:Python 3 里 queue 是模块,queue.Queue 才是你需要的队列类,别把模块和类搞混就好啦!

内容的提问来源于stack exchange,提问作者kpopguy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:46:44