导入requests模块遇‘部分初始化模块无get属性’错误及模块未识别求助
问题根源:模块文件名冲突
兄弟,你这问题根本不是要把文件分开存的事儿,是踩了模块文件名冲突的坑啦!
你自己创建了一个名叫requests.py的文件,这和你要导入的第三方请求库requests重名了。Python在导入模块时,会优先查找当前工作目录下的文件,所以你写import requests时,实际上导入的是你自己的requests.py,而不是真正的第三方库。这就导致了循环引用:你的requests.py里又试图调用requests.get(),但此时模块还没完全初始化,所以抛出了AttributeError。
解决步骤
完全不用把每个Python文件单独放文件夹,只要做这几步就能解决:
- 第一步:重命名你的自定义文件
把你那个叫requests.py的文件改成别的名字,比如request_file_downloader.py,彻底避免和第三方库重名。 - 第二步:清理缓存文件
删除当前目录下的__pycache__文件夹(如果有的话),或者requests.pyc文件,防止Python读取旧的缓存导入信息。 - 第三步:修正代码里的小错误
你的工作文件里调用get方法时少了模块前缀,应该是requests.get()而非直接get();另外那个疑似错误的文件里,playFile = ('TestDownload.txt', 'wb')漏写了open函数,也得修正。
修正后的工作文件代码:
import requests response = requests.get('https://www.newegg.ca/p/N82E16868105274') print(response.raise_for_status())
修正后的另一个文件代码:
import requests res = requests.get('') # 记得填有效的目标URL哦 with open('TestDownload.txt', 'wb') as playFile: # 用with语句更安全,无需手动close for chunk in res.iter_content(100000): playFile.write(chunk)
额外提醒
以后写Python文件时,尽量避免用第三方库的名字当文件名,比如numpy.py、pandas.py这类,都会触发类似的导入冲突问题。
内容的提问来源于stack exchange,提问作者Johnny Silverhand
相关产品推荐
相关产品推荐

