我想从父目录中的一个目录中的Python文件中导入一个类(class)。 这是当前的文件夹结构:
│ run_simulation_from_parent.py
│ __init__.py
│
├───.vscode
│ launch.json
│ settings.json
│
├───mod
│ │ mods.py
│ │ __init__.py
│ │
│ └───__pycache__
│ __init__.cpython-37.pyc
│
├───sim
│ │ run_simulation.py
│ │ __init__.py
│ │
│ └───__pycache__
│ __init__.cpython-37.pyc
│
└───__pycache__
__init__.cpython-37.pyc
文件
mod/mods.py
包含以下类:class Objective:
"""Objective function class"""
def __init__(self, x):
self.x = x
文件
sim/run_simulation.py
包含以下内容:from mod.mods import Objective
x = 5
obj = Objective(x)
当我尝试运行这段代码时,我得到了以下错误信息:
File "sim/run_simulation.py", line 1, in <module>
from mod.mods import Objective
ModuleNotFoundError: No module named 'mod'
在 Visual Studio Code 中,当我开始输入 mod.mods
和 import Objective
时,它会自动填充。
当我运行以下内容的 run_simulation_from_parent.py
时,没有任何问题:
from mod.mods import Objective
x = 5
obj = Objective(x)
print(obj.x)
我该如何在目录
sim
下执行此操作?我已经尝试了以下方法:
- 使用
from ..mod.mods import Objective
在 run_simulation.py 中执行。 - 使用以下内容的 init.py 文件:
import os, sys sys.path.append(os.path.dirname(os.path.realpath(__file__)))
- 不使用
__init__.py
文件。
编辑:我是从 Visual Studio Code 运行文件的,起始目录为父级目录。我还尝试从 Windows 命令行中的 sim 文件夹运行,其中我使用了:
python run_simulation.py