问题描述
在调试别人的代码的时候,比如文件结构如下:
package
├── __init__.py
├── cfg.py
└── model.py
别人可能在model.py里面写有如下内容
from .cfg import cfg_content
class model():
...
def demo():
'''测试model运行'''
m = model()
m.test_function()
...
if __name__ == '__main__':
demo()
这时候,__name__ == '__main__'显然是直接运行当前文件时进行demo演示的。
但是,直接运行的结果就是报错:
...
from .cfg import cfg_content
ImportError: attempted relative import with no known parent package
如果将from .cfg import cfg_content
改成from cfg import cfg_content
就可以正常运行。
我的理解
上面的报错内容也有提示,这个引用的包没找到父包。
经过参考多个网页,我的理解如下:
在使用相对import,也就是from .cfg import xxx
而不是from cfg import xxx
时,其中的“点”