【发布时间】:2019-11-10 09:29:30
【问题描述】:
我想从父目录中的某个目录中的 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 代码中,当我开始输入 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运行_simulation.py 使用具有以下内容的 init.py 文件:
import os, sys sys.path.append(os.path.dirname(os.path.realpath(__file__)))没有
__init__.py文件
编辑:我从父目录开始的 Visual Studio 代码运行文件。我还尝试从我使用的 sim 文件夹中的 windows 命令行
python run_simulation.py
【问题讨论】:
-
@user3223765 你能说出你使用项目的方式吗,即从哪里运行 run_simulations.py 文件?表示您如何在终端中运行它
-
我从父目录开始的 Visual Studio 代码运行文件。
标签: python python-import