File size: 1,687 Bytes
62afecd
 
 
 
 
 
3fa71d5
 
62afecd
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
import os
from huggingface_hub import HfApi
from tempfile import TemporaryDirectory
import importlib.util
import sys
import subprocess


def load_private_code():
    token = os.environ.get("TOKEN", "")
    repo_id = os.environ.get("REPO_ID", "")
    private_library_url = os.environ.get("PRIVATE_LIBRARY_URL", "")
    if token:
        try:
            subprocess.run(
                ["pip", "install", f"git+https://{token}@{private_library_url}"],
                check=True
            )
        except subprocess.CalledProcessError as e:
            print("Error installing private module:", e)
    api = HfApi(token=os.environ["PRIVATE_REPOSITORY_HF_TOKEN"])

    with TemporaryDirectory() as tmp_dir:
        # プライベートスペースからファイルをダウンロード
        api.snapshot_download(
            repo_id=repo_id,
            repo_type="space",
            local_dir=tmp_dir
        )
        sys.path.append(tmp_dir)

        spec = importlib.util.spec_from_file_location(
            "private_app",
            os.path.join(tmp_dir, "app.py")
        )
        private_module = importlib.util.module_from_spec(spec)
        sys.modules["private_app"] = private_module
        
        try:
            spec.loader.exec_module(private_module)
        except ModuleNotFoundError as e:
            print(f"Error loading module: {e}")
            print(f"Current sys.path: {sys.path}")
            print(f"Contents of tmp_dir: {os.listdir(tmp_dir)}")
            raise
        
        return private_module


private_app = load_private_code()
app = private_app.app

app.launch(
    auth=(private_app.USERNAME, private_app.PASSWORD),
    ssr_mode=False
)