build.py•2 kB
#!/usr/bin/env python3
"""
MCP Recommender 构建脚本
使用uv构建Python包
"""
import subprocess
import sys
from pathlib import Path
def run_command(cmd, description):
"""运行命令并处理错误"""
print(f"🔄 {description}...")
try:
result = subprocess.run(cmd, shell=True, check=True, capture_output=True, text=True)
print(f"✅ {description}成功")
if result.stdout:
print(f"输出: {result.stdout.strip()}")
return True
except subprocess.CalledProcessError as e:
print(f"❌ {description}失败")
print(f"错误: {e.stderr}")
return False
def main():
"""主构建流程"""
print("🚀 MCP Recommender 包构建开始")
print("=" * 50)
# 检查uv是否安装
if not run_command("uv --version", "检查uv版本"):
print("请先安装uv: pip install uv")
sys.exit(1)
# 同步依赖
if not run_command("uv sync", "同步依赖"):
sys.exit(1)
# 运行测试
print("\n🧪 运行测试...")
if not run_command("uv run -m mcp_recommender --test", "功能测试"):
print("⚠️ 测试失败,但继续构建...")
# 清理旧的构建文件
dist_dir = Path("dist")
if dist_dir.exists():
print("\n🧹 清理旧构建文件...")
import shutil
shutil.rmtree(dist_dir)
# 构建包
if not run_command("uv build", "构建Python包"):
sys.exit(1)
# 检查构建结果
print("\n📦 构建结果:")
if dist_dir.exists():
for file in dist_dir.iterdir():
size = file.stat().st_size / 1024 # KB
print(f" - {file.name} ({size:.1f} KB)")
print("\n🎉 构建完成!")
print("\n📋 后续步骤:")
print(" 1. 检查构建文件: ls -la dist/")
print(" 2. 测试安装: pip install dist/*.whl")
print(" 3. 发布到PyPI: uv publish")
return True
if __name__ == "__main__":
main()