背景
项目目录如下
.
├── best_model.pth
├── factify2
│ ├── ...
│
├── inference.py
├── main.py
├── model
│ ├── ...
│
├── model_epoch903_acc0.7617333333333334
├── predict.csv
├── __pycache__
│ ├── __init__.cpython-38.pyc
│ └── main.cpython-38.pyc
├── README.md
├── requirements.txt
├── retrieval
│ ├── retrieval.py
│ └── test.py
├── test_data_save.pkl
├── Test.py
├── train_data_save.pkl
├── utils
│ ├── dataset.py
│ └── __pycache__
└── val_data_save.pkl
尝试
在 /retrieval/retrieval.py
中导入 /main.py
中的 TrainDataset
类。
一开始尝试 from main import TrainDataset
报错,找不到main模块。
会不会是应为当前目录是 main
的子目录,因此修改为 from ..main import TrainDataset
依然报错,不能相对索引。
那是不是项目没加到path里呢?于是修改为
import sys
sys.path.append('..')
print(sys.path)
from main import TrainDataset
依然报错,还是找不着。
把main.py
中的 TrainDataset
分离到 /utils/dataset.py
还是报错。
解决
在打印的 sys.path
中确实存在 ..
这一项,可是为啥索引不到 main.py
或者 dataset.py
呢?
打印当前工作目录 print (os.path.abspath(os.curdir))
,结果发现工作目录是 /
,但是运行 /retrieval/retrieval.py
时 Python 未将根目录加入 path 中。所以只需将 sys.path.append('..')
改为 sys.path.append('.')
,问题解决~