Python项目文件引用问题:ImportError: attempted relative import with no known parent package
日期: 2020-07-22 分类: 个人收藏 532次阅读
问题说明:
在做一个项目,采用包的形式进行文件组织,运行代码是会报错ImportError: attempted relative import with no known parent package,下面先贴出解决方案。
项目目录示例
└── project
  ├── __init__.py
  ├── main.py
  └── modules
      ├── __init__.py
      └── module1.py
      └── module2.py
  └── ui
      ├── __init__.py
      └── view.py
      └── item.py
 
解决方案
- 首先,在顶层目录下,创建
__init__.py文件,在各级包文件夹下也同时创建__init__.py文件; view.py引用item.py内的函数或类,需采用如下方式:from ui.item import test,引用modules包下文件内的函数或类,需采用如下方式:
from modules.module1 import crawl
from modules import module2
 
- 项目目录下的
main.py文件引用各个包下文件内的函数或类,也需采用下面的方式: 
from ui.item import test
from modules.module1 import crawl
from modules import module2
 
可以发现,上述引用方式均为绝对引用,而不是下述相对引用方式
from .item import test
from ..modules.module1 import crawl
 
因此,在项目中一般来说最好采用上述绝对引用方式,基本可以避免文件引用问题。
参考资料
上一篇: Linux运维
精华推荐
