└── 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} |