在做一个项目,采用包的形式进行文件组织,运行代码是会报错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
因此,在项目中一般来说最好采用上述绝对引用方式,基本可以避免文件引用问题。
[1] [译][python]ImportError:attempted relative import with no known parent package
[2] python基础教程之执行文件异常报错:ImportError: attempted relative import with no known parent package
以上,欢用评论交流。