在 Python 包中向上两个向下一个目录导入模块

import a module up two and down one directory in Python package

我想加载一个名为 mymodule 的模块到我的文件系统中的上二下目录中。我在其他地方用过

import sys
sys.path.append('../mydirectory')
import mymodule # in mydirectory

为了上一个目录,然后下一个目录(在一个包中)来抓取一个模块,所以我希望它能工作:

import sys
sys.path.append('../../mydirectory')
import mymodule

然而,我得到了 ModuleNotFoundError: "No module named 'mymodule'"。我很困惑,因为我 运行 这个目录在我以前的(工作)程序所在目录的下一个目录中。 (我尝试添加 __init__.py 但没有帮助。)有谁知道为什么这不起作用?有什么建议吗?

这是我的首选方法:

import sys
from pathlib import Path

HERE = Path(__file__).parent

sys.path.append(str(HERE / '../../mydirectory'))

使用 __file__ 我不依赖当前工作目录作为相对路径的起点 - HERE 是当前文件所在的目录。

当然可以不用pathlib module.