无法从相同/其他目录中的脚本导入模块

时间:2020-10-28 15:21:27

标签: python python-3.x python-2.7

目录结构:

.
├── classification
│   ├── lstm_repres.py
│   ├── lstm_test.py
│   ├── lstm_train.py
│   ├── lstm_utils.py
│   ├── lstm_utils.pyc
│   └── svm_run.py
├── utils
│   ├── data_splits.py
│   ├── evaluation.py
│   ├── load_data.py
│   ├── NLTKPreprocessor.py
│   ├── resources.py
│   ├── TfIdf.py
│   └── vector_utils.py

lstm_train.py

from classification.lstm_utils import *

当我尝试同时使用python2 lstm_train.pypython3 lstm_train.py时,我得到:

Traceback (most recent call last):
  File "classification/lstm_train.py", line 7, in <module>
    from classification.lstm_utils import *
ModuleNotFoundError: No module named 'classification'

同一行发生

from utils.data_splits import get_train, get_val

这里是什么问题?为什么from <dir>.<script> import *格式在这里似乎不起作用?


编辑

如@ deathangel908所建议,我已经向两个目录添加了__init__.py个空文件,但错误仍然存​​在。

1 个答案:

答案 0 :(得分:0)

  • 为了将目录标记为要导入的软件包,它必须在该目录中具有最少的空白__init__.py。因此,将__init__.py文件添加到classificationutils目录中。

  • 要导入绝对路径包,您需要将root包中的python解释器作为模块运行:python3 -m "classification.lstm_train"