Last Updated: 2023-04-23 10:02:40 Sunday
-- TOC --
有错误的测试代码
$ cat a.py
from b import d
class c: pass
$ cat b.py
from a import c
class d: pass
错误表现
$ python3 a.py
Traceback (most recent call last):
File "a.py", line 1, in
from b import d
File "/home/xinlin/test/b.py", line 1, in <module>
from a import c
File "/home/xinlin/test/a.py", line 1, in <module>
from b import d
ImportError: cannot import name 'd' from 'b' (/home/xinlin/test/b.py)
$ python3 b.py
Traceback (most recent call last):
File "b.py", line 1, in
from a import c
File "/home/xinlin/test/a.py", line 1, in <module>
from b import d
File "/home/xinlin/test/b.py", line 1, in <module>
from a import c
ImportError: cannot import name 'c' from 'a' (/home/xinlin/test/a.py)
错误原因分析
修改方式
不要使用from ... import ...,直接import。
注意
每个模块,在Python解释器中,都只会真正地import一次,每个模块在内存中,只有一份!
本文链接:https://cs.pynote.net/sf/python/202301242/
-- EOF --
-- MORE --