Corin1998 commited on
Commit
2517621
·
verified ·
1 Parent(s): 8f18cb2

Update modules/utils.py

Browse files
Files changed (1) hide show
  1. modules/utils.py +32 -0
modules/utils.py CHANGED
@@ -12,6 +12,7 @@ from typing import Any, Dict, Optional, List
12
  # ------------------------------------------------------------
13
  _DATA_DIR: Optional[Path] = None
14
  _EXPORT_DIR: Optional[Path] = None
 
15
 
16
  def _is_writable(p: Path) -> bool:
17
  try:
@@ -33,6 +34,34 @@ def _pick_writable_dir(candidates: List[Path]) -> Path:
33
  fallback.mkdir(parents=True, exist_ok=True)
34
  return fallback
35
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
36
  def ensure_dirs() -> None:
37
  """書き込み可能なデータディレクトリを決定して作成。"""
38
  global _DATA_DIR, _EXPORT_DIR
@@ -61,6 +90,9 @@ def ensure_dirs() -> None:
61
  _DATA_DIR = chosen
62
  _EXPORT_DIR = export
63
 
 
 
 
64
  def data_dir() -> Path:
65
  ensure_dirs()
66
  return _DATA_DIR # type: ignore
 
12
  # ------------------------------------------------------------
13
  _DATA_DIR: Optional[Path] = None
14
  _EXPORT_DIR: Optional[Path] = None
15
+ _HF_INIT_DONE: bool = False
16
 
17
  def _is_writable(p: Path) -> bool:
18
  try:
 
34
  fallback.mkdir(parents=True, exist_ok=True)
35
  return fallback
36
 
37
+ def _init_hf_env(base: Path) -> None:
38
+ """
39
+ Hugging Face / Transformers / Sentence-Transformers の
40
+ キャッシュ&ホームをすべて base 配下に固定して PermissionError を回避。
41
+ """
42
+ global _HF_INIT_DONE
43
+ if _HF_INIT_DONE:
44
+ return
45
+
46
+ hf_home = base / "hf_home"
47
+ hf_cache = base / "hf_cache"
48
+ hf_home.mkdir(parents=True, exist_ok=True)
49
+ hf_cache.mkdir(parents=True, exist_ok=True)
50
+
51
+ # 主要な環境変数を強制設定(既存設定より優先)
52
+ os.environ.setdefault("HF_HOME", str(hf_home))
53
+ os.environ.setdefault("HUGGINGFACE_HUB_CACHE", str(hf_cache))
54
+ os.environ.setdefault("TRANSFORMERS_CACHE", str(hf_cache))
55
+ os.environ.setdefault("SENTENCE_TRANSFORMERS_HOME", str(hf_cache))
56
+
57
+ # 余計な参照を抑制
58
+ os.environ.setdefault("HF_HUB_DISABLE_TELEMETRY", "1")
59
+ os.environ.setdefault("HF_HUB_DISABLE_PROGRESS_BARS", "1")
60
+ # 既定のトークン探索を避けるため空文字に(公開モデルの匿名DLを想定)
61
+ os.environ.setdefault("HF_TOKEN", "")
62
+
63
+ _HF_INIT_DONE = True
64
+
65
  def ensure_dirs() -> None:
66
  """書き込み可能なデータディレクトリを決定して作成。"""
67
  global _DATA_DIR, _EXPORT_DIR
 
90
  _DATA_DIR = chosen
91
  _EXPORT_DIR = export
92
 
93
+ # ★ Hugging Face 関連のホーム/キャッシュを、この書き込み可能ベースに固定
94
+ _init_hf_env(chosen)
95
+
96
  def data_dir() -> Path:
97
  ensure_dirs()
98
  return _DATA_DIR # type: ignore