本文主要是介绍ImportError: attempted relative import with no known parent package 处理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
参考 https://zhuanlan.zhihu.com/p/416867942
Q:
为什么我使用
import syssys.path.insert(0, '../LongCLIP/model')import longclip
会报错
Traceback (most recent call last):File "d:\xxx\yyy\empty.py", line 4, in <module>import longclipFile "D:\xxx\yyy\../LongCLIP/model\longclip.py",line 13, in <module>from .model_longclip import build_modelImportError: attempted relative import with no known parent package,
而使用
import syssys.path.insert(0, '../LongCLIP')from model import longclip
则能正常执行
A:
这个问题的原因在于Python的包和模块导入机制。当你使用import longclip
时,Python会尝试在sys.path
列表中的每个目录下查找名为longclip.py
的文件。当找到这个文件并尝试执行它时,它并不知道它是作为一个包的一部分被导入的,因此,它不能识别相对导入from .model_longclip import build_model
。
然而,当你使用from model import longclip
时,Python会在sys.path
列表中的每个目录下查找名为model
的目录,并在该目录下查找__init__.py
文件和longclip.py
文件。在这种情况下,Python知道longclip.py
是作为model
包的一部分被导入的,因此,它能正确处理相对导入。
这就是为什么from model import longclip
可以正常工作,而import longclip
会导致错误的原因。
这篇关于ImportError: attempted relative import with no known parent package 处理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!