调用requests.get函数时意外触发TypeError错误求助
问题分析
从错误栈可以定位到问题根源:urllib3的connectionpool.py在初始化连接池队列时,执行self.pool = self.QueueCls(maxsize)传入了参数,但目标队列类的构造函数仅接受1个参数(self)。这种情况通常由以下原因导致:库版本不兼容、全局命名空间被意外覆盖、第三方协程库的猴子补丁冲突。
解决建议
- 排查自定义类冲突:检查所有代码文件及导入的模块,确认是否存在自定义的
Queue类,或通过from xxx import Queue覆盖了标准库/urllib3依赖的队列类,这类覆盖会直接导致参数匹配失败。 - 重装兼容版本的依赖:执行以下命令卸载并重新安装requests和urllib3,修复版本不兼容问题:
pip uninstall -y requests urllib3 pip install requests urllib3 - 检查协程库影响:如果环境中安装了gevent等协程库,其猴子补丁可能替换了标准队列类,导致参数不兼容。可以尝试卸载协程库测试,或升级至与当前requests/urllib3兼容的版本。
- 重建干净虚拟环境:若上述方法无效,创建全新的虚拟环境,仅安装requests依赖后再测试代码,排除旧环境依赖污染的问题。
内容的提问来源于stack exchange,提问作者Filip Smitka
相关产品推荐
相关产品推荐

