File size: 5,316 Bytes
3af2248
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
815fdc9
3af2248
 
 
815fdc9
3af2248
 
 
 
 
 
 
815fdc9
3af2248
 
 
 
 
 
 
 
 
 
 
815fdc9
3af2248
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2b52e56
 
 
3af2248
 
 
 
b19b8b2
3af2248
 
 
42bef8b
c1c01aa
3af2248
 
815fdc9
3af2248
 
 
 
 
 
f34f662
b1a9126
3af2248
 
 
 
b1a9126
3af2248
 
 
 
 
 
 
 
 
b1a9126
3af2248
 
 
 
 
 
 
 
 
 
 
 
f34f662
3af2248
 
f34f662
572e9a4
3af2248
572e9a4
 
f34f662
 
 
 
3af2248
40a3a53
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
import subprocess
import sys
import os
import urllib.request

def colored(text, color):
    """
    Функция для вывода цветного текста в консоль.
    """
    colors = {
        'red': '\033[91m',
        'green': '\033[92m',
        'yellow': '\033[93m',
        'blue': '\033[94m',
        'magenta': '\033[95m',
        'cyan': '\033[96m',
        'white': '\033[97m',
    }
    return colors.get(color, '') + text + '\033[0m'

def uninstall_module(module_name, python_path):
    """
    Функция для деинсталляции модуля.
    """
    print(colored(f"Удаление модуля {module_name}...", 'red'))
    pip_path = os.path.join(python_path, "Scripts", "pip.exe")
    subprocess.run([
        pip_path,
        "uninstall",
        "-y",
        module_name
    ])

def download_file(url, filename):
    """
    Функция для загрузки файла с помощью urllib.request.
    """
    print(colored(f"Загрузка файла {filename}...", 'magenta'))
    try:
        with urllib.request.urlopen(url) as response, open(filename, 'wb') as f:
            f.write(response.read())
        print(colored(f"Файл {filename} успешно загружен.", 'magenta'))
    except Exception as e:
        print(colored(f"Ошибка при загрузке файла: {e}", 'red'))

def install_module(filename, python_path):
    """
    Функция для установки модуля из файла .whl.
    """
    print(colored(f"Установка модуля из {filename}...", 'yellow'))
    pip_path = os.path.join(python_path, "Scripts", "pip.exe")
    subprocess.run([
        pip_path,
        "install",
        filename
    ])

def install_from_index(module_name, index_url, python_path):
    """
    Функция для установки модуля из указанного индекса.
    """
    print(colored(f"Установка модуля {module_name} с индекса {index_url}...", 'yellow'))
    pip_path = os.path.join(python_path, "Scripts", "pip.exe")
    subprocess.run([
        pip_path,
        "install",
        "--extra-index-url",
        index_url,
        module_name
    ])

if __name__ == "__main__":
    # Получение пути к текущей директории
    current_dir = os.path.dirname(os.path.abspath(__file__))

    # Создание полного пути к папке Python
    python_path = os.path.join(current_dir, "python_embeded")

    # Создание полного пути к папке Scripts
    python_scripts_path = os.path.join(python_path, "Scripts")
    
    # Определение путей к git
    git_path = os.path.join(current_dir, "git")
    git_bin_path = os.path.join(git_path, "bin")
    git_exe_path = os.path.join(git_bin_path, "git.exe")
    git_libexec_path = os.path.join(git_path, "libexec")

    # Обновление переменной PATH
    os.environ['PATH'] = f"{git_path};{git_bin_path};{git_libexec_path};{python_path};{python_scripts_path}"
    # os.environ['PATH'] = f"{git_path};{git_bin_path};{git_libexec_path};{os.environ['PATH']}"

    # Установка Comfy
    print(colored("Установка Comfy", 'yellow'))
    subprocess.run([
        git_exe_path,
        "clone",
        "https://github.com/comfyanonymous/ComfyUI"
    ])
    
    # Обновление numpy/onnxruntime/onnxruntime-gpu
    modules_to_uninstall = ["numpy", "onnxruntime", "onnxruntime-gpu"]
    for module in modules_to_uninstall:
        uninstall_module(module, python_path)

    # Обновление модуля pip
    print(colored("Обновление модуля pip...", 'yellow'))
    pip_path = os.path.join(python_path, "Scripts", "pip.exe")
    subprocess.run([
        pip_path,  # Добавлен путь к pip.exe
        "install",
        "--upgrade",
        "pip"
    ])
    
    # Установка numpy==1.26.4
    print(colored("Установка модуля numpy==1.26.4...", 'yellow'))
    pip_path = os.path.join(python_path, "Scripts", "pip.exe")
    subprocess.run([
        pip_path,  # Добавлен путь к pip.exe
        "install",
        "numpy==1.26.4"
    ])

    # Загрузка файла insightface-0.7.3-cp311-cp311-win_amd64.whl
    url = "https://github.com/Gourieff/Assets/raw/main/Insightface/insightface-0.7.3-cp311-cp311-win_amd64.whl"
    filename = "insightface-0.7.3-cp311-cp311-win_amd64.whl"
    download_file(url, filename)

    # Установка модуля из файла insightface-0.7.3-cp311-cp311-win_amd64.whl
    install_module(filename, python_path)

    # Установка torch/torchvision/torchaudio
    modules_to_install = ["torch", "torchvision", "torchaudio"]
    pytorch_index = "https://download.pytorch.org/whl/cu124"
    for module in modules_to_install:
        install_from_index(module, pytorch_index, python_path)
    
    # Установка onnxruntime-gpu из сетевого ресурса
    onnxruntime_index = "https://aiinfra.pkgs.visualstudio.com/PublicPackages/_packaging/onnxruntime-cuda-12/pypi/simple/"
    install_from_index("onnxruntime-gpu", onnxruntime_index, python_path)

    print(colored("Установка завершена.", 'green'))