吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2378|回复: 29
收起左侧

[Python 原创] 【原创开源】小白福音!一键自动部署 CLIProxyAPI 及 Web 控制中心

  [复制链接]
蜗牛很牛 发表于 2026-3-16 15:14
本帖最后由 蜗牛很牛 于 2026-3-16 21:38 编辑

【原创开源】小白福音!一键自动部署 CLIProxyAPI 及 Web 控制中心(自动装环境/拉代码)
大家好!今天给大家分享一个自写的一键部署 Python 脚本。
平时我们在折腾 GitHub 上的开源前后端项目时,最头疼的就是配环境:查 Git、装 Go、配 Node.js,还要分别克隆代码、开两个窗口跑服务,非常繁琐。为了造福坛友,我写了这个全自动环境检测与部署脚本,专门用来一键运行 CLIProxyAPI 及其前端管理中心。
哪怕是没有基础的小白,只要电脑上有 Python,运行这个脚本就能全自动搞定一切!
🌟 核心功能特性
🕵️‍♂️ 智能环境检测与补全:自动检测本机是否安装了 Git、Go、Node.js。如果没有,脚本会调用 Windows 自带的 winget 在后台静默安装,无需人工干预!
📦 自动拉取源码:自动从 GitHub 克隆最新的后端 (CLIProxyAPI) 和前端 (Management Center) 仓库。
🛠️ 生成独立启动脚本:自动在当前目录生成 run_api.bat 和 run_web.bat,不仅避开了 Python 嵌套子进程的坑,以后如果不想走全量脚本,直接双击 bat 也能独立运行。
🚀 一键双开启动:自动为你弹出两个控制台窗口,分别运行前端和后端。编译、装依赖、跑服务一步到位!


ScreenShot_2026-03-16_111726_321.png
ScreenShot_2026-03-16_112036_819.png
Gemini_Generated_Image_ywduw5ywduw5ywdu.png

💻 适用环境
系统:Windows 10 / Windows 11 (依赖 winget 包管理器)。
前置要求:电脑需安装 Python 环境。
⚠️ 温馨提示(必看)
网络问题:由于脚本需要访问 Winget 源、GitHub、Go 模块代理以及 NPM 源。强烈建议在全局科学上网的环境下运行此脚本,否则可能会在下载环境或克隆代码时卡住或报错。
如果大家觉得好用,求免费的评分和热心值鼓励一下!有任何报错可以在帖子里回复,我尽量解答~
权限提示:winget 安装环境时可能需要管理员权限,建议右键以管理员身份运行 CMD 或 PowerShell 来执行本脚本。
📜 源码分享
新建一个 deploy.py 文件,将以下代码粘贴进去,然后在终端运行 python deploy.py 即可:


[Python] 纯文本查看 复制代码
import os
import subprocess
import shutil
import sys
import time

def find_executable(name, default_paths):
    if shutil.which(name):
        return name
    for path in default_paths:
        if os.path.exists(path):
             return path
    return None

def install_via_winget(package_id):
    print(f" 未检测到对应环境,正在通过 winget 自动静默安装 {package_id} ...")
    print("    这可能需要一段时间下载及安装,请耐心等待。")
    try:
        subprocess.run(
            ["winget", "install", "--id", package_id, "-e", "--accept-package-agreements", "--accept-source-agreements", "--silent"],
            check=True
        )
        print(f"[+] {package_id} 安装完成!")
        # 停顿一下,等待文件系统刷新
        time.sleep(2)
    except subprocess.CalledProcessError as e:
        print(f"[-] 安装 {package_id} 失败,可能是发生网络连接故障或没有管理员权限。")
        print("    如有异常请考虑手动前往官网进行安装。")

def main():
    print("="*60)
    print(" 自动环境检查、克隆与部署 CLIProxyAPI & Management Center")
    print("="*60)
    
    # 1. 检查并安装基本环境
    # Git
    git_exec = find_executable("git", [r"C:\Program Files\Git\cmd\git.exe", r"C:\Program Files\Git\bin\git.exe"])
    if not git_exec:
        install_via_winget("Git.Git")
        git_exec = find_executable("git", [r"C:\Program Files\Git\cmd\git.exe", r"C:\Program Files\Git\bin\git.exe"])
        if not git_exec:
            print("[-] 严重: 无法定位 Git 安装路径。请手动安装后重试。")
            sys.exit(1)
    print(f"[+] Git 已就绪: {git_exec}")
    
    # Go 语言环境
    go_exec = find_executable("go", [r"C:\Program Files\Go\bin\go.exe"])
    if not go_exec:
        install_via_winget("GoLang.Go")
        go_exec = find_executable("go", [r"C:\Program Files\Go\bin\go.exe"])
        if not go_exec:
            print("[-] 严重: 无法定位 Go 语言环境安装路径。请手动安装后重试。")
            sys.exit(1)
    print(f"[+] Go (Golang) 已就绪: {go_exec}")

    # Node.js 环境
    npm_exec = find_executable("npm", [r"C:\Program Files\nodejs\npm.cmd"])
    if not npm_exec:
        install_via_winget("OpenJS.NodeJS")
        npm_exec = find_executable("npm", [r"C:\Program Files\nodejs\npm.cmd"])
        if not npm_exec:
            print("[-] 严重: 无法定位 npm/Node.js 包安装路径。请手动安装后重试。")
            sys.exit(1)
    print(f"[+] Node.js (npm) 已就绪: {npm_exec}")

    cwd = os.getcwd()
    api_dir = os.path.join(cwd, "CLIProxyAPI")
    web_dir = os.path.join(cwd, "Cli-Proxy-API-Management-Center")
    
    # 2. 从 GitHub 克隆仓库
    print("\n 步骤2: 检查/拉取 GitHub 仓库")
    if not os.path.exists(api_dir):
        print("    -> 正在克隆后端: CLIProxyAPI ...")
        subprocess.run([git_exec, "clone", "https://github.com/router-for-me/CLIProxyAPI.git"], check=True)
    else:
        print("    -> CLIProxyAPI 后端目录已存在,跳过克隆。")
        
    if not os.path.exists(web_dir):
        print("    -> 正在克隆前端: Cli-Proxy-API-Management-Center ...")
        subprocess.run([git_exec, "clone", "https://github.com/router-for-me/Cli-Proxy-API-Management-Center.git"], check=True)
    else:
        print("    -> Cli-Proxy-API-Management-Center 前端目录已存在,跳过克隆。")

    # 3. 构造一键启动的 bat 文件,避开 subprocess 和控制台嵌套环境带来的引语问题
    print("\n 步骤3: 生成分离启动批处理文件")
    api_bat = os.path.join(cwd, "run_api.bat")
    with open(api_bat, "w", encoding="utf-8") as f:
        f.write(f'''@echo off
title 运行中 - CLIProxyAPI Backend
cd /d "{api_dir}"
echo [Backend] 正在加载 Go 后端... (首次运行可能会自动下载 Go 模块依赖,如网络较慢请耐心等待)
"{go_exec}" run .
pause
''')
        
    web_bat = os.path.join(cwd, "run_web.bat")
    with open(web_bat, "w", encoding="utf-8") as f:
        f.write(f'''@echo off
title 运行中 - CLIProxyAPI Frontend WebUI
cd /d "{web_dir}"
echo [Frontend] 正在通过 npm 拉取并安装前端依赖,请耐心等待...
call "{npm_exec}" install
echo.
echo [Frontend] 依赖执行完成,即将启动 dev 服务器...
call "{npm_exec}" run dev
pause
''')

    # 4. 彻底启动他们
    print("\n 步骤4: 正式启动进程")
    print("    正在为您弹窗运行 CLIProxyAPI 后端服务...")
    subprocess.Popen(f'start "" "{api_bat}"', shell=True)
    time.sleep(1) # 后端先开,稍作缓冲
    print("    正在为您弹窗运行 Management-Center 前端服务...")
    subprocess.Popen(f'start "" "{web_bat}"', shell=True)
    
    print("\n[✔] 所有操作已自动触发!")
    print("    您会看到两个新的命令行窗口弹出,分别为前端和后端,如果它们报错请在窗口内查看提示。")
    print("    完成加载后,通常在浏览器打开 http://localhost:5173 即可访问前端界面。")

if __name__ == "__main__":
    main()

免费评分

参与人数 8吾爱币 +13 热心值 +8 收起 理由
wj37 + 1 + 1 谢谢@Thanks!
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
lubill318 + 1 + 1 谢谢@Thanks!
shaixi + 1 + 1 我很赞同!
luobo2233 + 1 谢谢@Thanks!
23168 + 1 + 1 谢谢@Thanks!
gNehcx + 1 + 1 谢谢@Thanks!
柒呀柒 + 1 + 1 热心回复!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

wj37 发表于 2026-7-1 23:36
待审核
(待审核)

zth5201 发表于 2026-3-17 18:41
softwkl 发表于 2026-3-16 16:50
有mac电脑一键自动部署吗

cpa好像有mac快速部署的指令,也挺快的,windows的复杂一点,这个帖子不错,收藏一下,说不定有用。
clyy 发表于 2026-3-16 16:27
TaoyaoX 发表于 2026-3-16 16:30
感谢作者,弄好了
softwkl 发表于 2026-3-16 16:50
有mac电脑一键自动部署吗
xiaolanyuki 发表于 2026-3-16 17:06
感谢分享
dsshiqiang 发表于 2026-3-16 17:58
感谢分享,先收藏,抽时间学着做做。
sifansi 发表于 2026-3-16 18:16
感谢分享,先收藏
 楼主| 蜗牛很牛 发表于 2026-3-16 18:28
softwkl 发表于 2026-3-16 16:50
有mac电脑一键自动部署吗

发给AI让他给你改下就好了
chengduld 发表于 2026-3-16 18:44
感谢分享,抽时间学着做做。
gNehcx 发表于 2026-3-16 19:19
感谢分享 正好可以用上
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - 52pojie.cn ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2026-8-28 03:18

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表