假设我在一个目录结构中为了方便而组织了一组脚本,如下所示:
root
│ helpers.py
│
├───dir_a
│ data.txt
│ foo.py
│
└───dir_b
data.txt
bar.py
foo.py
并且bar.py
是脚本在做不同的事情,但它们都data.txt
以相同的方式加载它们的不同。为了避免重复自己,我希望load_data()
在helpers.py
子目录dir_a
和dir_b
.
我曾尝试dir_a/foo.py
使用这样的相对导入来导入助手:
from ..helpers import load_data
foo_data = load_data('data.txt')
# ...rest of code...
但是直接foo.py
作为脚本运行在第 1 行失败,并带有ImportError
:
Traceback (most recent call last):
File "path/to/file/foo.py", line 1, in <module>
from ..helpers import load_data
ImportError: attempted relative import with no known parent package
我在 python 中尝试的精神是否可行(即简单且无需修改sys.path
)?从案例 3:从本网站上的父目录导入 ,答案似乎是否定的,我需要重组我的脚本集合以避免导入上一级。
额外的问题:如果不可能,为什么不这样做的理由是什么?