|
@@ -155,10 +155,21 @@ async def delete_model(model_id: str) -> dict[str, Any]:
|
|
|
if not record:
|
|
if not record:
|
|
|
return {"status": "not_found", "message": f"Model not found: {model_id}"}
|
|
return {"status": "not_found", "message": f"Model not found: {model_id}"}
|
|
|
|
|
|
|
|
- # 删除本地文件目录
|
|
|
|
|
|
|
+ # 删除本地文件目录(对软链接,删除其指向的真实目录)
|
|
|
model_dir = Path(record.path) if record.path else settings.models_dir / record.id.replace("/", "_")
|
|
model_dir = Path(record.path) if record.path else settings.models_dir / record.id.replace("/", "_")
|
|
|
deleted_files = False
|
|
deleted_files = False
|
|
|
- if model_dir.exists() and model_dir.is_dir():
|
|
|
|
|
|
|
+ if model_dir.is_symlink():
|
|
|
|
|
+ # ModelScope 下载的模型可能是软链接,删除真实目录
|
|
|
|
|
+ real_dir = model_dir.resolve()
|
|
|
|
|
+ import shutil
|
|
|
|
|
+ if real_dir.exists() and real_dir.is_dir():
|
|
|
|
|
+ shutil.rmtree(real_dir, ignore_errors=True)
|
|
|
|
|
+ # 如果还有父级软链接(如 dphn/ 下的其他链接),一并清理
|
|
|
|
|
+ parent_link = model_dir.parent
|
|
|
|
|
+ if parent_link.is_symlink():
|
|
|
|
|
+ shutil.rmtree(parent_link, ignore_errors=True)
|
|
|
|
|
+ deleted_files = True
|
|
|
|
|
+ elif model_dir.exists() and model_dir.is_dir():
|
|
|
import shutil
|
|
import shutil
|
|
|
shutil.rmtree(model_dir, ignore_errors=True)
|
|
shutil.rmtree(model_dir, ignore_errors=True)
|
|
|
deleted_files = True
|
|
deleted_files = True
|