记录 | 个人开发库推送至PyPi流程梳理(ChatGPT to Markdown 工具发布完整流程)

ChatGPT to Markdown 工具发布完整流程

能把整个流程梳理一遍吗?我备份下,方便下次查阅。(第一性原则)

后面我找时间推送到GitHub

点击跳转:┏ (゜ω゜)=👉
记录 | 个人开发库推送至PyPi流程梳理(ChatGPT to Markdown 工具发布完整流程)

# ChatGPT to Markdown  一个简单的工具,将ChatGPT导出的zip文件转换为漂亮的Markdown文件。  使用方法 chatgpt-to-md --help  # 基本用法 chatgpt-to-md conversation.zip  # 指定输出目录 chatgpt-to-md conversation.zip -o ./my_chats  # Python中使用 from chatgpt_to_md import convert  convert("conversation.zip", "./output")  # 功能特点  - ✅ 自动解压zip文件 - ✅ 转换所有对话为独立的Markdown文件 - ✅ 包含YAML front matter元数据 - ✅ 按时间排序对话消息 - ✅ 自动处理文件名中的非法字符 

第一性原则:从零到发布的本质步骤

核心认知

  1. 目标:将本地Python脚本转化为全球可安装的包
  2. 本质:创建标准化结构 + 配置元数据 + 构建分发 + 发布
  3. 关键:遵循Python包标准,让pip能识别和安装

第一阶段:项目标准化

1.1 创建项目结构

chatgpt-to-md/                    # 项目根目录 ├── src/                         # 源代码目录 │   └── chatgpt_to_md/          # 包目录(与项目名对应) │       ├── __init__.py         # 包初始化文件 │       └── core.py             # 核心功能代码 ├── tests/                      # 测试目录(可选) ├── pyproject.toml              # 项目配置(核心) ├── README.md                   # 项目说明 └── LICENSE                     # 许可证文件 

1.2 核心文件内容

src/chatgpt_to_md/__init__.py

"""ChatGPT to Markdown Converter""" __version__ = "0.1.0" __author__ = "Your Name" from .core import convert, main __all__ = ["convert", "main"] 

src/chatgpt_to_md/core.py

import json import zipfile import os from datetime import datetime import re  def convert(zip_path, output_dir="./chatgpt_output"):     """主转换函数"""     # 你的核心代码在这里     pass  def main():     """命令行入口点"""     import argparse     # 命令行解析代码     pass  if __name__ == "__main__":     main() 

pyproject.toml(项目心脏)

[build-system] requires = ["setuptools>=45", "wheel"] build-backend = "setuptools.build_meta"  [project] name = "chatgpt-md-export"           # 包名(必须唯一) version = "0.1.0"                   # 版本号 description = "将ChatGPT导出的对话转换为Markdown文件" authors = [{name = "Your Name", email = "your.email@example.com"}] readme = "README.md" license = {text = "MIT"} requires-python = ">=3.7"  [project.urls] Homepage = "https://github.com/yourusername/chatgpt-to-md"  [project.scripts] chatgpt-to-md = "chatgpt_to_md.core:main" 

README.md

# ChatGPT to Markdown 简单易用的ChatGPT对话导出工具  ## 安装 ```bash pip install chatgpt-md-export 

使用

chatgpt-to-md conversation.zip 
 #### `LICENSE` ```text MIT License内容... 

第二阶段:本地开发测试

2.1 开发模式安装

# 在项目根目录执行 pip install -e . 

2.2 测试功能

# 测试命令行 chatgpt-to-md --help  # 测试实际功能 chatgpt-to-md test_conversation.zip -o ./test_output 

第三阶段:构建分发包

3.1 安装构建工具

pip install build 

3.2 执行构建

# 清理环境(重要!) rm -rf dist/ build/ src/*.egg-info/  # 构建分发包 python -m build 

3.3 验证构建结果

  • 检查 dist/ 目录生成两个文件:
    • .tar.gz 源码包
    • .whl 二进制包

第四阶段:发布到PyPI

4.1 准备认证信息

获取API Token(推荐):

  1. 访问 https://pypi.org/
  2. 注册/登录账户
  3. 账户设置 → API tokens → Create token
  4. 复制token(以pypi-开头)

记录 | 个人开发库推送至PyPi流程梳理(ChatGPT to Markdown 工具发布完整流程)

记录 | 个人开发库推送至PyPi流程梳理(ChatGPT to Markdown 工具发布完整流程)

4.2 安装上传工具

pip install twine 

4.3 检查包文件

twine check dist/* 

4.4 执行上传

# 使用API Token上传 twine upload dist/* -u __token__ -p pypi-你的token内容 

4.5 验证发布

  1. 访问 https://pypi.org/project/你的包名/
  2. 测试安装:pip install 你的包名

第五阶段:版本更新

5.1 更新版本号

修改 pyproject.toml

version = "0.1.1"  # 递增版本号 

5.2 重新发布流程

# 清理 rm -rf dist/ build/ src/*.egg-info/  # 构建 python -m build  # 上传 twine upload dist/* -u __token__ -p pypi-你的token 

故障排除手册

问题1:认证失败

症状403 ForbiddenInvalid authentication
解决

  • 确认使用 __token__ 作为用户名
  • 确认token以 pypi- 开头
  • 检查token是否有发布权限

问题2:包名冲突

症状403 Forbidden 或包名已存在
解决

  • 修改 pyproject.toml 中的 name
  • 选择更独特的包名
  • 重新构建上传

问题3:构建警告

症状:许可证格式警告
解决

  • 使用新的许可证格式:license = {text = "MIT"}

问题4:依赖冲突

症状:安装时版本冲突
解决

  • 确保只使用Python标准库
  • 避免不必要的外部依赖

快速参考命令集

# 开发测试 pip install -e . chatgpt-to-md --help  # 构建发布 pip install build twine rm -rf dist/ build/ src/*.egg-info/ python -m build twine check dist/* twine upload dist/* -u __token__ -p pypi-你的token  # 用户安装 pip install 你的包名 

核心要点总结

  1. 结构标准化src/包名/ + pyproject.toml
  2. 入口明确:通过[project.scripts]定义命令行工具
  3. 元数据完整:名称、版本、描述、作者、许可证
  4. 构建清洁:每次发布前清理旧构建
  5. 认证安全:使用API Token而非密码
  6. 测试先行:先在TestPyPI测试,再发正式版

这个流程适用于任何Python工具的发布,只需替换核心功能代码即可。记住:标准化结构是成功发布的关键!

发表评论

评论已关闭。

相关文章