Python相对引用报错ImportError: attempted relative import with no known parent package


 

└── Project
    ├── dir1
    │   ├── __init__.py
    │   └── module1.py     
    │   └── module1_2.py     
    ├── dir2
    │  
    │   └── module2.py
    ├── file_a.py   
    └── main.py

1. 在main.py 中想要 使用  from . import  file_a 的时候, 报错信息 ImportError: attempted relative import with no known parent package

报错信息的意思是尝试使用相对路劲导入但找不到已知的父级包。一般来说,当你尝试在一个能够运行的.py文件内使用相对路径导入,就会发生此报错。报错的原因在于,python的相对路径导入实际上需要借助当前文件的父级包路径来实现,即通过判断一个.py文件的__name__和__package__属性来得到关于父级包的信息,当在一个能够运行的.py应用文件中,有:

if __name__ == '__main__':

这就在文件中引入了main入口,此时文件的__name__属性为‘__main__’而__package__属性为None,如果在这样的文件中使用相对路径引入,解释器就找不到父级包的任何信息,因此报错。

Python貌似有个坑爹的设定,当前执行文件的目录不会被当做package。

为了验证问题, 可以在 import 代码所在文件 添加以下代码

print('__file__={0:<35} | __name__={1:<20} | 

你可能感兴趣的:(Python,python)