从零打造你的专属Python第三方库

大家好,这里是程序员晚枫,全网同名。

熟悉我的朋友都知道,我的账号内容80%都是关于开源项目的功能文档,剩下20%是关于开发这些功能的周边。

今年开始邀请了小伙伴们参与开源项目的开发和维护,今天就以potx-cloud为例,讲一下怎么成为一个Python库的发布者。

potx-cloud是什么

potx-cloud是专门用来调用腾讯云平台的工具库,目前的核心功能是:1行代码,实现文字识别。

shell 复制代码
pip install potx-cloud
python 复制代码
import potx

# 发票识别
potx.ocr.VatInvoiceOCR()

怎么参与potx-cloud的开发

potx的源码,全部在GitCode开源:gitcode.com/python4offi...,在gitee和GitHub,也都是同步更新的。

shell 复制代码
git clone https://gitcode.com/python4office/potx-cloud.git

cd potx-cloud

pip install .

修改代码后,提交pr到仓库的develop分支即可。

怎么发布新版本?

经历过上面几步,你开发的功能,就有机会加入下一个版本里面,给所有人使用了。

为了防止出现问题,目前发布新版本主要是我自己在操作,但我手里的库实在是多,而且我发现小伙伴们的水平并不比我差,只要有责任心,也不会出现大问题。

所以大家对一个库有足够的了解以后,可以根据下面的内容,自己主动实现对该库的发布/更新。

注册账号

目前所有的python第三方库,都在这个网站托管:pypi.org,你需要在这里注册一个账号,注意:名字只能是字母和数字,不建议用标点符号。

注册以后,给我说一下你的昵称,我邀请你成为该库的maintainer,比如potx-cloud库的maintainer有:

在平台收到成为maintainer的邀请后,同意即可。

单元测试

回到代码目录,请务必通过单元测试,测试完你所有的修改后,再执行下面的操作。

修改版本号

pypi规定,同一个版本号,只能发布一次。

所以发布之前, 请修改2处地方的版本号,如下图所示:

  • setup.cfg:这里面的版本号,是真正影响代码版本的地方。关于这个文档里每个参数填写的意义,查看:Configuring setuptools using setup.cfg files
  • init.py:和setup.cfg里的版本保持一致。代码里可以调用的版本号,对发布没有实际影响。

另外说明一下版本号的规则:

主版本号.次版本号.修订号

  • 修订号:每个新库都是从0.0.1开始递增,最后一位也是用的最多的。后续用于修复bug
  • 次版本号/主版本号:1个新库,功能较为完备了,会发布1.0.0,以后每次新增功能,会更新次版本号。

建议:更新主版本号之前,一定要经过充分讨论和测试!!

运行脚本

在potx-cloud目录下,运行以下命令:

shell 复制代码
pip install twine

sh script/upload.sh

不要进入script目录!!具体原因可以看脚本是怎么写的。

第一次运行这个脚本可能会报错,因为现在pypi网站时双因子认证了,可能会让你在发布的电脑上,做一些token或者其它双因子认证的设置,根据它提示的文档做就可以了。英文不好,或者干脆找不到也可以问我。

发布以后,请把最新的版本号及时同步到开发小组的群里.

待优化项

现在pypi官网,已经开始建议使用更为方便的pyproject.toml来管理和发布第三方库了:packaging.python.org/en/latest/g...

希望新加入的小伙伴可以学习研究一下,对我们第三方库的管理,也进行一个升级换代~

相关推荐
我的xiaodoujiao7 分钟前
使用 Python 语言 从 0 到 1 搭建完整 Web UI自动化测试学习系列 24--数据驱动--参数化处理 Excel 文件 1
python·学习·测试工具·pytest
开心-开心急了23 分钟前
关于Flutter与Qt for python 的一些技术、开源、商用等问题
开发语言·python·qt·flutter
淘源码d40 分钟前
什么是医院随访系统?成熟在用的智慧随访系统源码
java·spring boot·后端·开源·源码·随访系统·随访系统框架
@小码农1 小时前
2025年北京海淀区中小学生信息学竞赛第一赛段试题(附答案)
人工智能·python·算法·蓝桥杯
Q_Q19632884751 小时前
python+django/flask基于机器学习的就业岗位推荐系统
spring boot·python·django·flask·node.js·php
AI科技星2 小时前
张祥前统一场论动量公式P=m(C-V)误解解答
开发语言·数据结构·人工智能·经验分享·python·线性代数·算法
海琴烟Sunshine2 小时前
leetcode 345. 反转字符串中的元音字母 python
python·算法·leetcode
ithicker2 小时前
Pycharm+Deepseek结合使用Continue插件无法返回中文产生乱码
ide·python·pycharm
棉猴3 小时前
《pygame中Sprite类实现多帧动画》注-通过多张序列帧显示动画2-1
python·游戏·pygame·游戏编程
权泽谦3 小时前
用 Python 做一个天气预报桌面小程序(附源码 + 打包与部署指导)
开发语言·python·小程序