Spaces:
Sleeping
Sleeping
File size: 4,391 Bytes
d06e22b | 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 143 144 145 146 147 148 149 | #!/usr/bin/env python3
"""
Скрипт для подготовки проекта к деплою на Hugging Face Spaces
"""
import os
import shutil
import subprocess
def create_structure():
"""Создает правильную структуру проекта"""
print(" Создание структуры проекта...")
# Создаем папки если их нет
folders = ['static', 'templates']
for folder in folders:
if not os.path.exists(folder):
os.makedirs(folder)
print(f" Создана папка: {folder}")
else:
print(f" Папка уже существует: {folder}")
# Проверяем наличие script.js в static/
if os.path.exists('script.js'):
shutil.move('script.js', 'static/script.js')
print(" script.js перемещен в static/")
return True
def check_files():
"""Проверяет наличие необходимых файлов"""
print("\n🔍 Проверка файлов...")
required_files = ['app.py', 'requirements.txt', 'Dockerfile']
missing_files = []
for file in required_files:
if os.path.exists(file):
print(f" {file}")
else:
print(f" {file} - ОТСУТСТВУЕТ!")
missing_files.append(file)
if missing_files:
print(f"\n Не хватает файлов: {missing_files}")
return False
return True
def clean_unnecessary():
"""Удаляет ненужные файлы для HF"""
print("\n🗑 Очистка ненужных файлов...")
files_to_remove = [
'railway.json',
'check_railway.py',
'Procfile',
'runtime.txt',
'nixpacks.toml',
'pyvenv.cfg'
]
for file in files_to_remove:
if os.path.exists(file):
try:
os.remove(file)
print(f" Удален: {file}")
except:
print(f"Не удалось удалить: {file}")
return True
def update_requirements():
"""Обновляет requirements.txt"""
print("\n Обновление зависимостей...")
# Упрощенные зависимости
requirements = """Flask==2.3.3
Flask-CORS==4.0.0
requests==2.31.0
urllib3==2.0.7
Werkzeug==2.3.7
python-dotenv==1.0.0"""
with open('requirements.txt', 'w') as f:
f.write(requirements)
print(" ✅ requirements.txt обновлен")
return True
def git_operations():
"""Выполняет Git операции"""
print("\n💾 Git операции...")
try:
# Добавляем все файлы
subprocess.run(['git', 'add', '.'], check=True)
print(" Файлы добавлены в Git")
# Коммит
subprocess.run(['git', 'commit', '-m', 'Prepare for Hugging Face Spaces deployment'], check=True)
print(" Коммит создан")
return True
except subprocess.CalledProcessError as e:
print(f" Ошибка Git: {e}")
return False
def main():
print(" ПОДГОТОВКА К HUGGING FACE SPACES")
print("=" * 50)
# Выполняем шаги
steps = [
("Структура проекта", create_structure),
("Проверка файлов", check_files),
("Очистка", clean_unnecessary),
("Зависимости", update_requirements),
]
all_ok = True
for step_name, step_func in steps:
print(f"\n {step_name}:")
if not step_func():
all_ok = False
if all_ok:
print("\n" + "=" * 50)
print("Проект готов к деплою на Hugging Face!")
print("\nСледующие шаги:")
print("1. Откройте https://huggingface.co/spaces")
print("2. Нажмите 'Create new Space'")
print("3. Выберите:")
print(" - Name: pdf-table-extractor")
print(" - SDK: Docker")
print(" - Visibility: Public")
print("4. Нажмите 'Create Space'")
print("5. Загрузите файлы или свяжите с GitHub")
else:
print("\nЕсть проблемы, которые нужно исправить")
if __name__ == '__main__':
main() |