tripocli v2.0.0:Tripo AI 3D 生成与加工 CLI(面向 Agent 与开发者,纯 Python 标准库、零第三方依赖)

覆盖文生 3D、图生 3D、多视图、批量生成,以及重拓扑、绑定、动画、智能分割、
纹理、PBR、智能 UV、部件补全、格式导出与下载。

代码组织:一个功能一个模块(tripo/features/),入口薄壳 tripocli.py。
This commit is contained in:
Mrpzx committed 2026-10-13 19:22:54 +08:00
commit 977f97995a
60 files changed
+5622

No files matched your search

+62
View File
@@ -0,0 +1,62 @@
"""自我更新 — tripocli update.
tripocli update # 从记住的源码目录重装全局 CLI
tripocli update --from ~/Documents/AI/github/Tripo2Api
tripocli update --check # 只查看当前状态,不安装
tripocli update --dry-run # 只打印将要执行的命令
改完源码后跑一次,全局 `tripocli` 就更新到最新;用 pyenv 时自动 rehash。
"""
from .. import __version__, update as updater
NAME = "update"
HELP = "更新全局 CLI 到项目源码的最新版本"
def add_arguments(parser):
parser.add_argument("--from", dest="source", help="指定项目源码目录(会记住,之后无需再传)")
parser.add_argument("--check", action="store_true", help="只显示源码目录与已安装版本,不执行安装")
parser.add_argument("--dry-run", action="store_true", help="只打印将要执行的命令")
parser.add_argument("--no-rehash", action="store_true", help="跳过 pyenv rehash")
def run(ctx):
source = updater.detect_source(ctx.args.source, config=ctx.config)
if ctx.args.check or not source:
installed = updater.installed_version()
info = {
"source": str(source) if source else None,
"running_version": __version__,
"installed_version": installed,
"needs_install": bool(source) and installed != __version__,
"pyenv": updater._has_pyenv(),
}
if not source:
ctx.out.error(
"未找到项目源码目录。请指定一次:tripocli update --from <项目目录>"
)
return info
ctx.out.data(info, human=lambda: (
ctx.out.line(f"源码目录 : {info['source']}"),
ctx.out.line(f"当前运行版本: {info['running_version']}"),
ctx.out.line(f"已安装版本 : {info['installed_version'] or '未安装'}"),
ctx.out.line(f"需要更新 : {'是' if info['needs_install'] else '否(已一致)'}"),
ctx.out.line(f"pyenv : {'是(安装后会自动 rehash)' if info['pyenv'] else '否'}"),
))
return info
# Remember the source so later runs are just `tripocli update`.
ctx.config.set(**{updater.INSTALL_SOURCE_KEY: str(source)})
report = updater.update(source, rehash=not ctx.args.no_rehash, dry_run=ctx.args.dry_run)
ctx.out.data(
report,
human=lambda: (
ctx.out.line("✅ 已更新全局 tripocli" if not ctx.args.dry_run else "(dry-run)"),
*[ctx.out.line(" " + line) for line in updater.report_lines(report)],
ctx.out.line(" 提示: 在项目目录内执行时会用项目里的代码;其它目录才用刚装的这份"),
),
)
return report