今天在写python程序的时候报了这个错。一般出现这个错误,不是命名出了问题,就是路径出了问题,由于我的文件中存在多层引用,造成了这个问题。
问题原因:
我在【A】文件下from B import bb,也就是引入B文件下的bb方法
然后【B】文件的bb方法里又调用了【C】文件的cc方法
而【C】文件里又import了B文件的bb2方法
问题解释:
来看如下例子:

./test
	|--main.py
	|--sub_a.py
	|--sub_b.py
# main.py
from sub_a import x
print(x + 1)
# sub_a.py
from sub_b import b
a=1
x=a+b
print(x)
# sub_b.py
from sub_ a import a
b=a+1

以上程序运行会报cannot import name ‘a’的错
由【main.py】进入【sub_a.py】 中执行from sub_b import b语句,在这里程序进入【sub_b.py】中执行,【sub_a.py】程序暂停执行,此时需要在【sub_b. py】使用的【sub_a.py 】中的a = 1 变量还没有生成,因此出现了.上述错误。

要解决错误也很简单,我们只要保证在导入模块中内容时,此内容在程序执行到此处时已定义,把【sub_a.py】修改成以下形式:

a =1
from sub_b import b
x=a+b
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐