train. py的内容:
import os
import datetime
import torch
省略掉一些导入的代码
def TrainDeeplabV3Plus():
省略
if __name__=="__main__":
TrainDeeplabV3Plus()
test. py的内容:
import train
train.TrainDeeplabV3Plus()
执行test. py报错而且很怪:
像是没跑完又重新从头开始加载了一样
该回答引用ChatGPT
这个错误可能是由于train.py文件里的代码有一些前提条件(如文件路径)是以当前工作目录作为基准的,但是在test.py中调用train.py时工作目录不同,导致路径不正确。可以通过在train.py的代码里使用绝对路径来解决。
train.py
import os
import sys
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), "..")))
import train
train.TrainDeeplabV3Plus()
test.py
import os
import sys
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), "..")))
import train
train.TrainDeeplabV3Plus()
这可能是一个循环导入问题,train.py中导入了test.py中的模块,而test.py中也将train.py作为模块导入,这就形成了一个死循环。换句话说,每当文件都尝试加载自己,这会导致出错。你可以尝试重新组织代码,例如避免使用import,改用两个文件之间的函数通信。
感觉像是代码“累赘”了,存在重复导入的嫌疑。
只能是导入模块的问题,你省略的未展示的代码里可能有路径,在train.py调用时路径是OK的,但在test调用时不对,导致运行失败,可以使用
import sys,用sys把调用的目录都加入路径,这样不管哪里都可以找到。
祝好运