Python 进行debug的错误most likely due to a circular import

最近在学习爬虫,准备debug,就是点击那个小瓢虫的时候出现了一行错误

ImportError: cannot import name 'namedtuple' from partially initialized module 'collections' (most likely due to a circular import)

ImportError: cannot import name 'namedtuple' from partially initialized module 'collections' (most likely due to a circular import)

就是说有循环的导入。

循环导入是什么?

a.py

from b import b01


def a01:
    pass

print('我是a,我引入了b')

b.py

form a import a01


def b01:
    pass

print('我是b,我引入了a')

这种就是循环引入,类似于要一颗蛋需要一只鸡,要一只鸡需要一颗蛋的问题,系统不知道先给你鸡还是先给你蛋,就会报错。

排查步骤

先说结论,绝大部分就是因为开发者用了Python内置的一些关键词来命名py文件了。

 我这个,以log中出现的自己写的代码行(图中马赛克那行)为界,将log分为上下两部分。箭头的地方这三个区域要特别注意,你的py文件名字一定别和他们重名。

我的错误很明显,就是我的一个文件命名为了keyword文件,和Python库自带的keyword文件冲突了。所以会报错。

解决方案就是将上图log中自己的代码行在的py文件(第二部分的第一行的文件)重新命名就可以了。

原因

我自己的keyword文件的import关系是这样的(a→b表示引入a import b)

我的keyword文件 → json → decoder → re → functools → collecitons → 系统的keyword文件

简写就是

我的keyword → collections → 系统的keyword

由于俩文件重名,导致开发环境无法区别,就会报出most likely due to a circular import的错误。

  • 12
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值