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

ChatGPT to Markdown 工具发布完整流程

能把整个流程梳理一遍吗?我备份下,方便下次查阅。(第一性原则)
后面我找时间推送到GitHub

txt 复制代码
# 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

python 复制代码
"""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

python 复制代码
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(项目心脏)

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

markdown 复制代码
# ChatGPT to Markdown
简单易用的ChatGPT对话导出工具

## 安装
```bash
pip install chatgpt-md-export

使用

bash 复制代码
chatgpt-to-md conversation.zip
复制代码
#### `LICENSE`
```text
MIT License内容...

第二阶段:本地开发测试

2.1 开发模式安装

bash 复制代码
# 在项目根目录执行
pip install -e .

2.2 测试功能

bash 复制代码
# 测试命令行
chatgpt-to-md --help

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

第三阶段:构建分发包

3.1 安装构建工具

bash 复制代码
pip install build

3.2 执行构建

bash 复制代码
# 清理环境(重要!)
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-开头)

4.2 安装上传工具

bash 复制代码
pip install twine

4.3 检查包文件

bash 复制代码
twine check dist/*

4.4 执行上传

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

4.5 验证发布

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

第五阶段:版本更新

5.1 更新版本号

修改 pyproject.toml

toml 复制代码
version = "0.1.1"  # 递增版本号

5.2 重新发布流程

bash 复制代码
# 清理
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标准库
  • 避免不必要的外部依赖

快速参考命令集

bash 复制代码
# 开发测试
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工具的发布,只需替换核心功能代码即可。记住:标准化结构是成功发布的关键!

相关推荐
掘金安东尼4 小时前
前端周刊第436期(2025年10月13日–10月19日)
前端·javascript·github
道之极万物灭4 小时前
Python操作word实战
开发语言·python·word
Python私教4 小时前
DRF:Django REST Framework框架介绍
后端·python·django
Scabbards_5 小时前
github 个人静态网页搭建(一)部署
github·web
我星期八休息6 小时前
C++智能指针全面解析:原理、使用场景与最佳实践
java·大数据·开发语言·jvm·c++·人工智能·python
刘逸潇20056 小时前
FastAPI(二)——请求与响应
网络·python·fastapi
java1234_小锋6 小时前
TensorFlow2 Python深度学习 - 循环神经网络(SimpleRNN)示例
python·深度学习·tensorflow·tensorflow2
java1234_小锋6 小时前
TensorFlow2 Python深度学习 - 通俗理解池化层,卷积层以及全连接层
python·深度学习·tensorflow·tensorflow2
fsnine6 小时前
Python图形化界面——pyqt5教程
开发语言·python·qt