MoneyPrinterTurbo_03 / streamlit_app.py
CatPtain's picture
Upload 5 files
d33f5e5 verified
#!/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()