目錄
前言:
一、具體實現:
二、關鍵技術解析
路徑動態拼接
安全目錄創建
環境變量魔法
遷移條件檢查
三、代碼實現:
前言:
? ? ? ? 當模型文件下載到本地c盤的默認路徑時,可用以下代碼的形式進行文件位置的遷移。
一、具體實現:
以下Python腳本完美解決上述問題,核心流程如圖:
二、關鍵技術解析
-
路徑動態拼接
target_path = os.path.join(project_dir, "xxxx.pth")
使用
os.path.join
確保跨平臺路徑兼容性 -
安全目錄創建
os.makedirs(project_dir, exist_ok=True)
exist_ok=True
參數避免目錄已存在時報錯 -
環境變量魔法
os.environ['TORCH_HOME'] = os.path.dirname(project_dir)
通過設置
TORCH_HOME
永久改變緩存根目錄(進程級生效) -
遷移條件檢查
-
源文件存在且目標文件不存在 → 執行遷移
-
目標文件已存在 → 跳過遷移
-
源文件不存在 → 提示下載
-
三、代碼實現:
import os
import shutil
import torch
import torchvision.models as models# 源文件路徑(你的緩存目錄)
source_path = r"C:\Users\14844\.cache\torch\hub\checkpoints\xxxxx.pth"# 目標路徑(你的項目目錄)
project_dir = r"E:\Pycharm\project\xxxx\models"
target_path = os.path.join(project_dir, "xxxxx.pth")# 創建目標目錄(如果不存在)
os.makedirs(project_dir, exist_ok=True)# 移動模型文件
if os.path.exists(source_path) and not os.path.exists(target_path):print(f"正在將模型從 {source_path} 移動到 {target_path}...")shutil.move(source_path, target_path)print("模型移動完成!")
elif os.path.exists(target_path):print(f"模型已存在于 {target_path},無需移動。")
else:print(f"源模型文件不存在:{source_path}")print("請確保模型已正確下載。")# 更新環境變量,指向新的模型位置
os.environ['TORCH_HOME'] = os.path.dirname(project_dir)# 測試加載模型
try:print("\n正在測試加載模型...")vgg = models.vgg19(pretrained=True)print("模型加載成功!程序可以正常運行。")
except Exception as e:print(f"模型加載失敗:{e}")print("請檢查路徑是否正確或嘗試重新下載模型。")