我想从位于当前目录之上的文件中的类继承。

是否可以相对导入该文件?


当前回答

import sys
sys.path.append("..") # Adds higher directory to python modules path.

其他回答

现在是2022年,没有一个答案真的对我有用。下面是最后奏效的方法

import sys
sys.path.append('../my_class')
import my_class

我的目录结构:

src ——my_class.py 笔记本电脑 ——mynotebook.ipynb

我从mynotebook.ipynb导入my_class。

您可以使用sys.path.append()方法将包含包的目录添加到搜索模块的路径列表中。例如,如果包位于当前目录以上两个目录,您可以使用以下代码:

import sys
sys.path.append("../../")

如果包位于当前目录上方的一个目录,你可以使用下面的代码:

import sys
sys.path.append("..")

@alex-martelli用pathlib优化的答案:

import pathlib
import sys

_parentdir = pathlib.Path(__file__).parent.parent.resolve()
sys.path.insert(0, str(_parentdir))

import module_in_parent_dir

sys.path.remove(str(_parentdir))
import sys
sys.path.append("..") # Adds higher directory to python modules path.

运行python /myprogram/submodule/mymodule.py,导入/myprogram/mainmodule.py,例如via

from mainmodule import *

在Linux上(例如,在python Docker映像中),我必须将程序根目录添加到PYTHONPATH:

export PYTHONPATH=/myprogram