Python Requests库报错无法解决求助:ImportError与循环导入导致的AttributeError问题
问题排查与解决方案
嘿,我立刻就发现问题的根源了!你的脚本文件名是typing.py,这和Python标准库中的typing模块重名了,这直接引发了循环导入的问题,导致你看到的两个奇怪错误。
为什么会出现这些错误?
第一个错误:
ImportError: cannot import name 'Union' from 'typing'
当requests依赖的idna模块尝试从标准库typing导入Union时,Python的模块查找机制会优先加载当前工作目录下的typing.py(也就是你的脚本),而你的脚本里并没有定义Union这个对象,所以抛出了导入错误。第二个错误:
AttributeError: partially initialized module 'requests' has no attribute 'get'
在模块加载的循环过程中,requests模块还没完成全部初始化,你的脚本就已经开始调用requests.get()了,此时requests模块还没来得及注册get这个属性,所以出现了这个错误。
快速解决步骤
- 重命名你的脚本文件:把
typing.py改成一个不会和标准库冲突的名字,比如type_speed_game.py或者my_typer.py。 - 清理缓存:删除当前目录下的
__pycache__文件夹(如果存在),避免残留的缓存文件干扰模块加载。 - 重新运行脚本:这时候Python会正确加载标准库的
typing模块,requests也能正常初始化并使用get方法了。
你之前写相同代码没问题,只是因为之前的脚本文件名没有和标准库模块重名,这次刚好踩了命名冲突的小坑,调整一下文件名就搞定啦!
内容的提问来源于stack exchange,提问作者Samuel Troyer
相关产品推荐
相关产品推荐

