Python项目文件引用问题:ImportError: attempted relative import with no known parent package

问题说明:

在做一个项目,采用包的形式进行文件组织,运行代码是会报错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

解决方案

  1. 首先,在顶层目录下,创建__init__.py文件,在各级包文件夹下也同时创建__init__.py文件;
  2. view.py引用item.py内的函数或类,需采用如下方式:from ui.item import test,引用modules包下文件内的函数或类,需采用如下方式:
from modules.module1 import crawl
from modules import module2
  1. 项目目录下的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


以上,欢用评论交流。

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