Spaces:
Running
Running
#!/usr/bin/env python3 | |
""" | |
MoneyPrinterTurbo - 简化版Streamlit应用 | |
一键启动,无需复杂配置 | |
""" | |
import os | |
import sys | |
import subprocess | |
from pathlib import Path | |
# 修复protobuf兼容性问题 | |
os.environ["PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION"] = "python" | |
# 添加项目根目录到Python路径 | |
project_root = Path(__file__).parent | |
sys.path.insert(0, str(project_root)) | |
def check_dependencies(): | |
"""检查基础依赖是否安装""" | |
required_packages = ['streamlit', 'toml', 'loguru'] | |
missing_packages = [] | |
for package in required_packages: | |
try: | |
__import__(package) | |
print(f"✅ {package} 已安装") | |
except ImportError: | |
missing_packages.append(package) | |
print(f"❌ {package} 缺失") | |
if missing_packages: | |
print(f"\n🔧 需要安装: {', '.join(missing_packages)}") | |
print("自动安装中...") | |
try: | |
subprocess.run([ | |
sys.executable, "-m", "pip", "install", | |
*missing_packages, "protobuf==3.20.3" | |
], check=True, capture_output=True) | |
print("✅ 依赖安装完成") | |
return True | |
except subprocess.CalledProcessError: | |
print("❌ 自动安装失败,请手动运行:") | |
print(f"pip install {' '.join(missing_packages)} protobuf==3.20.3") | |
return False | |
return True | |
def setup_directories(): | |
"""创建必要的目录""" | |
dirs = [ | |
"storage/tasks", | |
"storage/temp", | |
"storage/cache_videos" | |
] | |
for dir_path in dirs: | |
os.makedirs(dir_path, exist_ok=True) | |
print(f"📁 创建目录: {dir_path}") | |
def find_streamlit_file(): | |
"""查找可用的Streamlit文件""" | |
candidates = [ | |
("webui/SimpleMain.py", "📱 简化版界面"), | |
("webui/Main.py", "🖥️ 完整版界面"), | |
("app.py", "☁️ HF Spaces版界面") | |
] | |
for file_path, description in candidates: | |
full_path = project_root / file_path | |
if full_path.exists(): | |
print(f"找到界面文件: {description}") | |
return full_path | |
print("❌ 未找到任何界面文件") | |
return None | |
def main(): | |
"""主启动函数""" | |
print("🚀 MoneyPrinterTurbo 简化启动器") | |
print("=" * 50) | |
# 检查依赖 | |
print("📦 检查依赖...") | |
if not check_dependencies(): | |
input("按回车键退出...") | |
return | |
# 创建目录 | |
print("\n📁 设置目录...") | |
setup_directories() | |
# 查找界面文件 | |
print("\n🔍 查找界面文件...") | |
target_file = find_streamlit_file() | |
if not target_file: | |
input("按回车键退出...") | |
return | |
# 启动Streamlit | |
print(f"\n🌐 启动Streamlit...") | |
print(f"📍 访问地址: http://localhost:8501") | |
print("=" * 50) | |
cmd = [ | |
sys.executable, "-m", "streamlit", "run", str(target_file), | |
"--server.port=8501", | |
"--server.address=localhost", | |
"--browser.gatherUsageStats=false", | |
"--server.enableCORS=true", | |
"--theme.base=light" | |
] | |
try: | |
subprocess.run(cmd, check=True) | |
except KeyboardInterrupt: | |
print("\n👋 应用已停止") | |
except FileNotFoundError: | |
print("❌ Streamlit未安装,请运行: pip install streamlit") | |
except Exception as e: | |
print(f"❌ 启动失败: {e}") | |
print("💡 尝试手动运行: streamlit run webui/Main.py") | |
input("按回车键退出...") | |
if __name__ == "__main__": | |
main() |