柿崎透真 commited on
Commit
35a2d28
·
1 Parent(s): 0bda4a9

update app.py

Browse files
Files changed (1) hide show
  1. app.py +33 -12
app.py CHANGED
@@ -3,9 +3,9 @@ from huggingface_hub import HfApi
3
  from tempfile import TemporaryDirectory
4
  import importlib.util
5
  import sys
 
6
  import subprocess
7
 
8
-
9
  def load_private_code():
10
  token = os.environ.get("TOKEN", "")
11
  if token:
@@ -17,19 +17,29 @@ def load_private_code():
17
  except subprocess.CalledProcessError as e:
18
  print("Error installing private module:", e)
19
  api = HfApi(token=os.environ["PRIVATE_REPOSITORY_HF_TOKEN"])
 
 
 
20
 
21
- with TemporaryDirectory() as tmp_dir:
22
  # プライベートスペースからファイルをダウンロード
23
  api.snapshot_download(
24
  repo_id="neoai-inc-private/pj-andromeda",
25
  repo_type="space",
26
- local_dir=tmp_dir
27
  )
28
- sys.path.append(tmp_dir)
29
-
 
 
 
 
 
 
 
30
  spec = importlib.util.spec_from_file_location(
31
  "private_app",
32
- os.path.join(tmp_dir, "app.py")
33
  )
34
  private_module = importlib.util.module_from_spec(spec)
35
  sys.modules["private_app"] = private_module
@@ -39,16 +49,27 @@ def load_private_code():
39
  except ModuleNotFoundError as e:
40
  print(f"Error loading module: {e}")
41
  print(f"Current sys.path: {sys.path}")
42
- print(f"Contents of tmp_dir: {os.listdir(tmp_dir)}")
43
  raise
 
 
 
44
 
45
- return private_module
 
 
46
 
 
 
 
47
 
48
- private_app = load_private_code()
49
- app = private_app.app
 
50
 
 
51
  app.launch(
52
  auth=(private_app.USERNAME, private_app.PASSWORD),
53
- ssr_mode=False
54
- )
 
 
3
  from tempfile import TemporaryDirectory
4
  import importlib.util
5
  import sys
6
+ import shutil
7
  import subprocess
8
 
 
9
  def load_private_code():
10
  token = os.environ.get("TOKEN", "")
11
  if token:
 
17
  except subprocess.CalledProcessError as e:
18
  print("Error installing private module:", e)
19
  api = HfApi(token=os.environ["PRIVATE_REPOSITORY_HF_TOKEN"])
20
+
21
+ tmp_dir = TemporaryDirectory() # with文を使用しない
22
+
23
 
24
+ try:
25
  # プライベートスペースからファイルをダウンロード
26
  api.snapshot_download(
27
  repo_id="neoai-inc-private/pj-andromeda",
28
  repo_type="space",
29
+ local_dir=tmp_dir.name
30
  )
31
+
32
+ # tmp_dirをPythonパスに追加
33
+ sys.path.append(tmp_dir.name)
34
+
35
+ # 現在のディレクトリを一時的に変更
36
+ original_dir = os.getcwd()
37
+ os.chdir(tmp_dir.name)
38
+
39
+ # app.pyをインポート
40
  spec = importlib.util.spec_from_file_location(
41
  "private_app",
42
+ os.path.join(tmp_dir.name, "app.py")
43
  )
44
  private_module = importlib.util.module_from_spec(spec)
45
  sys.modules["private_app"] = private_module
 
49
  except ModuleNotFoundError as e:
50
  print(f"Error loading module: {e}")
51
  print(f"Current sys.path: {sys.path}")
52
+ print(f"Contents of tmp_dir: {os.listdir(tmp_dir.name)}")
53
  raise
54
+
55
+ # オリジナルのディレクトリに戻す
56
+ os.chdir(original_dir)
57
 
58
+ return private_module, tmp_dir # tmp_dirも返す
59
+ except Exception as e:
60
+ raise e
61
 
62
+ # プライベートコードを読み込んでGradioアプリを取得
63
+ private_app, tmp_dir = load_private_code() # tmp_dirを保持
64
+ app = private_app.app # Gradioアプリのインスタンス
65
 
66
+ # Cleanup function for when the app stops
67
+ def cleanup():
68
+ tmp_dir.cleanup()
69
 
70
+ # private側の認証情報を使用してアプリを起動
71
  app.launch(
72
  auth=(private_app.USERNAME, private_app.PASSWORD),
73
+ ssr_mode=False,
74
+ root_path=tmp_dir.name # 一時ディレクトリのパスを設定
75
+ )