ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

DeepSeek-Agent-Harness-2026终极指南-第15章第71节-从demo到产品-打包发布:PyPI上架实战

DeepSeek-Agent-Harness-2026终极指南-第15章第71节-从demo到产品-打包发布:PyPI上架实战 打包发布PyPI 上架实战代码写得再好别人装不上等于零。这一节把 DeepPilot 打包发布到 PyPI让全世界pip install deeppilot一键安装。本文导航pyproject.toml 发布配置uv build 打包TestPyPI 试发正式发布与版本管理uvx deeppilot 一键体验小结pyproject.toml 发布配置pyproject.toml是 Python 项目的核心配置文件定义了项目元数据、依赖、入口点等。# pyproject.toml —— DeepPilot 发布配置 [project] name deeppilot version 1.0.0 description AI 编程助手用 DeepSeek 大模型从零构建的智能体 readme README.md requires-python 3.11 license { text MIT } authors [ { name Your Name, email youremail.com } ] keywords [ai, agent, deepseek, llm, coding-assistant] classifiers [ Development Status :: 5 - Production/Stable, Intended Audience :: Developers, License :: OSI Approved :: MIT License, Programming Language :: Python :: 3.11, Programming Language :: Python :: 3.12, Topic :: Software Development :: Libraries :: Python Modules, ] # 运行时依赖 dependencies [ openai1.30.0, pydantic2.5.0, pydantic-settings2.1.0, httpx0.25.0, rich13.7.0, ] # 可选依赖 [project.optional-dependencies] dev [ pytest7.4.0, pytest-asyncio0.21.0, ruff0.1.0, ] all [ duckduckgo-search4.0.0, trafilatura1.6.0, mcp1.0.0, ] # CLI 入口点 [project.scripts] deeppilot deep_pilot.cli:main # 构建系统 [build-system] requires [hatchling] build-backend hatchling.build # 包发现 [tool.hatch.build.targets.wheel] packages [deep_pilot] # 包含非 Python 文件技能文档、角色配置等 [tool.hatch.build.targets.sdist] include [ deep_pilot/**/*.py, deep_pilot/skills/*.md, deep_pilot/roles/*.yaml, ] # 代码检查配置 [tool.ruff] line-length 100 target-version py311 [tool.ruff.lint] select [E, F, I, N, W]关键字段解释字段作用namePyPI 上的包名必须唯一version语义化版本号major.minor.patchdependencies安装时自动安装的依赖project.scriptsCLI 命令入口deeppilot命令映射到deep_pilot.cli:mainclassifiersPyPI 分类标签方便用户搜索optional-dependencies可选依赖组pip install deeppilot[all]安装全部uv build 打包# 安装构建工具uv 已内置# 清理旧构建rm-rfdist/# 构建 sdist源码包和 wheel二进制包uv build输出Building deeppilot... ✓ Built deeppilot-1.0.0.tar.gz ✓ Built deeppilot-1.0.0-py3-none-any.whl检查包内容# 查看 wheel 内容uv run python-mzipfile-ldist/deeppilot-1.0.0-py3-none-any.whl|head-20Archive: dist/deeppilot-1.0.0-py3-none-any.whl Length Date Time Name --------- ---------- ----- ---- 1234 2026-09-20 15:30 deep_pilot/__init__.py 5678 2026-09-20 15:30 deep_pilot/agent_loop.py 3456 2026-09-20 15:30 deep_pilot/cli.py ... 890 2026-09-20 15:30 deep_pilot/skills/coding.md 567 2026-09-20 15:30 deep_pilot/roles/coder.yamlTestPyPI 试发正式发布前先在 TestPyPI 验证流程。注册 TestPyPI 账号访问 https://test.pypi.org/account/register/注册账号并验证邮箱创建 API TokenAccount settings → API tokens → Add API token上传到 TestPyPI# 配置凭证一次性# 方法1使用 tokenuv run python-mtwine upload\--repositorytestpypi\--username__token__\--passwordpypi-xxxxxxxxxxxx\dist/*# 方法2使用 .pypirc 配置文件# ~/.pypirc# [testpypi]# username __token__# password pypi-xxxxxxxxxxxx从 TestPyPI 安装测试# 从 TestPyPI 安装uv pipinstall\--index-url https://test.pypi.org/simple/\--extra-index-url https://pypi.org/simple/\deeppilot# 验证安装uv run deeppilot--version# DeepPilot v1.0.0# 测试 CLIuv run deeppilot run你好TestPyPI 的坑包名可能被占用换个名字如deeppilot-yourname依赖包可能不在 TestPyPI需要--extra-index-url上传后不能覆盖同版本每次测试都要改版本号正式发布与版本管理注册 PyPI 账号访问 https://pypi.org/account/register/注册并验证邮箱创建 API Token上传到 PyPI# 上传uv run python-mtwine upload\--username__token__\--passwordpypi-xxxxxxxxxxxx\dist/*版本号管理遵循语义化版本Semantic VersioningMAJOR.MINOR.PATCH | | | | | └── 修复 bug向后兼容 | └──────── 新增功能向后兼容 └────────────── 不兼容的 API 变更场景版本号变化示例修复 bugPATCH 11.0.0 → 1.0.1新增工具MINOR 11.0.1 → 1.1.0重构 APIMAJOR 11.1.0 → 2.0.0发布新版本流程# 1. 更新版本号# pyproject.toml: version 1.0.1# 2. 更新 CHANGELOG.md# ## [1.0.1] - 2026-09-21# ### Fixed# - 修复流式输出中文乱码问题# 3. 提交并打标签gitaddpyproject.toml CHANGELOG.mdgitcommit-mchore: bump version to 1.0.1gittag v1.0.1gitpushgitpush--tags# 4. 构建并发布rm-rfdist/ uv build uv run python-mtwine upload dist/*uvx deeppilot 一键体验uvx是 uv 提供的工具运行命令无需安装即可运行 PyPI 上的 CLI 工具# 无需安装直接运行uvx deeppilot run读取 main.py 并找出所有 TODO# 指定版本uvx deeppilot1.0.0--version# 交互模式uvx deeppilot chatuvx会临时下载并运行工具用完即删非常适合试用。GitHub Actions 自动发布# .github/workflows/publish.ymlname:Publish to PyPIon:push:tags:-v*jobs:publish:runs-on:ubuntu-lateststeps:-uses:actions/checkoutv4-name:Install uvuses:astral-sh/setup-uvv3-name:Buildrun:uv build-name:Publish to PyPIenv:TWINE_USERNAME:__token__TWINE_PASSWORD:${{secrets.PYPI_TOKEN}}run:uv run python-m twine upload dist/*打标签v1.0.1后自动构建发布。小结pyproject.toml定义包元数据、依赖、CLI 入口是发布的核心。uv build一条命令打包 sdist wheel。TestPyPI正式发布前的试验场验证流程无误。语义化版本MAJOR.MINOR.PATCH让用户知道升级风险。uvx无需安装即可运行降低试用门槛。GitHub Actions打标签自动发布CI/CD 闭环。DeepPilot v1.0 正式发布从个人项目变成开源产品。下节预告产品发布只是开始变现才是目标。下一节进入五大商业场景第一个企业代码审查机器人——Git 钩子/CI 流水线触发、diff 提取、分级审查安全/性能/风格、评论回写从需求到上线的完整交付实录与报价拆解。如果觉得本文对你有帮助欢迎点赞、收藏、关注三连本系列持续更新中关注不迷路~
返回列表