从NTTS出发完整指南教你用setup.py bdist_wheel与twine上传你的第一个PyPI包【免费下载链接】NTTSNO TIME TO SLEEP项目地址: https://gitcode.com/gh_mirrors/ntt/NTTSNTTSNo Time To Sleep中文名没时间睡觉是一个让人会心一笑的 Python 小项目当你 CtrlC 中断程序时它会把 traceback 的最后一行悄悄替换成Model.inference(img)让你的代码看起来就像在跑一个神经网络模型。这个开源项目的发布流程非常标准——通过setup.py bdist_wheel打包成 wheel 文件再用twine上传到 PyPI。本文就以 NTTS 为例手把手教你如何用这套经典工具链上传你的第一个 PyPI 包。为什么用NTTS当范例新手友好的PyPI包发布样板NTTS 的项目结构非常精简刚好适合用来理解发布 PyPI 包的完整流程核心代码只有一个文件NTTS/ntts.py外加NTTS/__init__.py入口打包配置集中在根目录的setup.py字段简单清晰项目说明直接复用README.md一份文件两处用还附带了test.py测试脚本和ntts.pth自动导入文件NTTS/ ├── NTTS/ │ ├── __init__.py │ ├── ntts.py │ └── tts/ │ └── __init__.py ├── LICENSE ├── README.md ├── ntts.pth ├── setup.py └── test.py这样的规模对新手刚刚好既能完整跑通打包 → 上传 → 安装全流程又不会被复杂的配置吓退。发布前准备注册PyPI账号并安装打包工具在动手之前需要做好三件准备工作注册 PyPI 账号访问 pypi.org 注册并开启两步验证同时建议注册 TestPyPItest.pypi.org用于先试发布再转正。升级基础工具确保 setuptools、wheel、twine 都是最新版本pip install --upgrade pip setuptools wheel twine规划版本号版本号一旦发布就不能重复使用。NTTS 当前版本是 0.1.0如果你的包是首次发布从 0.1.0 开始即可。看懂setup.pyPyPI包的核心配置文件setup.py是打包发布的总指挥。NTTS 的配置堪称教科书级简洁我们挑重点拆解from setuptools import setup, find_packages VERSION 0.1.0 with open(README.md, r, encodingutf-8) as fp: long_description fp.read() setup( nameNTTS, versionVERSION, description一句话简介, long_descriptionlong_description, long_description_content_typetext/markdown, licenseMIT, authorJadyXuan, packagesfind_packages(), )关键字段的含义一览字段作用name包名也就是pip install时使用的名字version版本号每次发布必须递增description一句话简介显示在 PyPI 列表页long_description完整说明NTTS 直接读取README.mdpackagesfind_packages()自动发现并打包NTTS目录下的所有子包NTTS 的打包配置位于根目录的setup.py而README.md既是项目文档又被读取为 PyPI 主页的长描述这个一鱼两吃的思路非常值得新手借鉴 ✅。一键构建wheel包python setup.py bdist_wheel 实操一切就绪后在项目根目录执行打包命令python setup.py bdist_wheel执行成功后项目里会多出一个dist/目录里面就是生成的 wheel 包dist/ └── NTTS-0.1.0-py3-none-any.whl文件名中的NTTS-0.1.0是包名和版本号py3表示支持 Python 3none-any表示纯 Python、平台无关。小提示重复构建前最好先清空dist/目录可执行python setup.py clean --all避免旧文件混进本次发布。用twine上传PyPI包先试TestPyPI再正式发布wheel 包构建好之后就来到了最关键的上传环节。twine 是官方推荐的 PyPI 上传工具比早期setup.py upload更安全、更规范。第一步上传到 TestPyPI 试水twine upload --repository testpypi dist/*按提示输入 TestPyPI 的用户名和密码或 API Token即可。第二步确认无误后上传到正式 PyPItwine upload dist/*上传成功后twine 会打印出该包在 PyPI 上的访问地址。这套命令与 NTTS 项目 README.md 中的发布命令完全一致python setup.py bdist_wheel twine upload dist/*验证发布成果安装并体验你的第一个PyPI包上传完成后打开一个全新的终端环境用 pip 安装并体验pip install NTTS然后在任意 Python 脚本中导入它运行并按下 CtrlCpython test.py此时你会惊喜地发现traceback 的最后一行变成了model.py中的Model.inference(img)——是的你的神经网络模型跑起来了这就是 NTTS 的幽默所在 。如果还想体验它的姊妹功能Time to Sleep可以导入子模块NTTS.tts它会假装你的代码阻塞在time.sleep()上。从pip install到 CtrlC 特效只需要这么几步你的第一个 PyPI 包就正式面向全世界开放下载了。新手发布PyPI包常见问题速查long_description 解析报错README.md 的 Markdown 语法要合法同时确保long_description_content_type设置正确。版本号重复被拒同一版本只能上传一次修改版本号后重新构建再上传。dist 目录残留旧文件上传前先清理dist/避免把旧 wheel 一起传上去。中文乱码读取 README.md 时务必指定encodingutf-8NTTS 的setup.py就是这么做的。忘记 API TokenPyPI 推荐使用 API Token 代替密码上传时按提示粘贴即可。结语你的第一个PyPI包已经上路从setup.py bdist_wheel打包到twine上传再到pip install验证NTTS 向我们完整演示了一条标准的 Python 包发布链路。它证明了一件事发布你的第一个 PyPI 包并没有想象中那么难一份配置、一条命令、一个账号就能把代码分享给全世界。如果你想获取 NTTS 的最新源码来对照练习可以执行git clone https://gitcode.com/gh_mirrors/ntt/NTTS相关文件速查打包配置见setup.py项目说明见README.md核心实现见NTTS/ntts.py与NTTS/__init__.py测试脚本见test.py。现在轮到你把作品打包成 wheel用 twine 上传你的第一个 PyPI 包了【免费下载链接】NTTSNO TIME TO SLEEP项目地址: https://gitcode.com/gh_mirrors/ntt/NTTS创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考