从父包导入模块

时间:2021-05-04 10:43:44

标签: python import path parent

我有这个目录结构

src
|
|\Lib
| |__init__.py
| |utils.py
|  \Scripts
|   |__init__.py
|   |myscript.py
|__init__.py

我需要在 utils.py 中导入 myscript.pyfrom ..utils import function 给了我

ImportError: attempted relative import with no known parent package

所以我的尝试是通过执行将父包添加到路径

import sys
from pathlib import Path
sys.path.append(str(Path(__file__).resolve().parents[1]))

在最里面的 __init__.py(在 Scripts 文件夹下)没有任何成功。

我在这里遗漏了什么?

1 个答案:

答案 0 :(得分:1)

我的建议是对如何处理此类问题有一个很好的理解是阅读这篇文章: Relative imports for the billionth time

您的问题的一种解决方案可能如下:

  1. 有这个文件夹结构
src
|
|\Lib
| |__init__.py
| |utils.py
|  
|\Scripts
| |myscript.py
  1. 将其保存在您的myscript.py
import sys
from pathlib import Path
sys.path.append(str(Path(__file__).resolve().parents[1]))

并将 from ..utils import function 更改为 from Lib.utils import function

这是解决问题的一种方法。