当前位置: 首页 > news >正文

python包发布流程

1. 整理包结构

myfirstpkg/ # 项目根目录(名字任意) ├── myfirstpkg/ # 核心包目录(必须和包名一致) │ ├── __init__.py # 包标识文件(必填) │ └── core.py # 你的核心代码 ├── README.md # 说明文档(必填,告诉用户怎么用) ├── LICENSE # 开源许可证(必填,如 MIT) ├── pyproject.toml # 构建配置(必填,新版标准) └── setup.cfg # 包信息配置(可选)

各文件说明:

1.myfirstpkg/core.py:放你的核心代码,比如:

def hello(): return "Hello! 这是我发布的第一个PyPi包~"

2.myfirstpkg/__init__.py:导出接口(方便用户使用):

from .core import hello # 把hello函数暴露出去 __version__="0.0.3" # 版本号(必填)

3.README.md:简单写使用说明,比如:

# myfirstpkg 一个简单的 Python 测试包 # 安装 pip install myfirstpkg # 使用 from myfirstpkg import hello print(hello())

4.LICENSE:推荐用 MIT 许可证(复制 MIT 文本即可,网上搜「MIT LICENSE」直接复制):

MIT License Copyright (c) [2026] [tongxiaobin/Ethan] Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

2. 配置构建文件(pyproject.toml)

这是新版 Python 发布的核心配置文件:

# pyproject.toml [build-system] requires = ["setuptools>=61.0", "wheel"] build-backend = "setuptools.build_meta"

3. 配置包信息(setup.cfg)

注意不要有注释:version与__init__.py中的version一致:

[metadata] name = myfirstpkg_txb version = 0.0.3 author = tongxiaobin author_email = 1344184686@qq.com description = 一个测试用的 Python 包 long_description = file: README.md long_description_content_type = text/markdown url = https://github.com/tongxiaobin/myfirstpkg classifiers = Programming Language :: Python :: 3 License :: OSI Approved :: MIT License Operating System :: OS Independent [options] packages = find: python_requires = >=3.6

4. 安装构建工具

发布前需要安装两个工具:build(构建包)和twine(上传到PyPI):

pip install build twine

5. 构建包

在项目根目录执行命令,生成可发布的包文件(.whl.tar.gz):

python -m build

执行后会在根目录生成dist/文件夹,里面是你的包文件:

dist/ ├── myfirstpkg-0.0.1-py3-none-any.whl # 轮子包(推荐) └── myfirstpkg-0.0.1.tar.gz # 源码包

6. 上传到PyPI

一. 注册PyPi账号

先去PyPI官网注册账号(记住用户名和密码,以及API Token,现在上传都是通过Token)。

二. 上传包

用twine上传比直接上传更安全。

twine upload dist/*

执行后会提示输入PyPI的用户名和密码(现在都是提示输入API Token),输入完等到上传即可。

API Token获取步骤:用户名—>Account seetings—>Add API token(只出现一次,保存好)

三. 验证发布结果

上传成功后,其他人就可以通过pip安装你的包了:

pip install myfirstpkg_txb
import myfirstpkg print(myfirstpkg.__version__) >>'0.0.3' # 可直接调接口,因为在__init__.py里已经执行了from .core import hello myfirstpkg.hello() >>'Hello! 这是我发布的第一个PyPi包~' # 也可通过core模块调用 from myfirstpkg import core core.hello() >>'Hello! 这是我发布的第一个PyPi包~'

四. 注意事项

  • 包名唯一性:PyPi上的包名是全局唯一的,如果提示“包名已存在”,需修改setup.cfg里的name;
  • 版本号规则:每次更新发布必须换版本号(如0.0.1—>0.0.2),可在PyPI官网用户名—>Your projects里管理已经上传的项目,如果旧项目删除了,重新上传也必须换版本号
http://www.jsqmd.com/news/468629/

相关文章:

  • Android系统卡顿排查实战:当system_server卡在io_schedule(二)
  • 【OpenClaw】彻底卸载教程:告别残留,3步搞定(附一键脚本+检测工具)
  • 安静不下来?如何应对课堂注意力不集中与冲动行为调整策略
  • 保安管理公司切入物业赛道的数字化路径与策略
  • 数字化运维实践:如何构建全场景、智能化的设备管理系统?
  • PyTorch 实现这个张量逐元素乘积的计算
  • 2026青岛子宫腺肌症医院 青岛新阳光妇产医院本地优选
  • 教你卸载 OpenClaw,附详细教程
  • 鸿蒙 HarmonyOS 6 | 多媒体(05)全局播控 AVSession 接入与后台控制
  • 2026年最值得学习的10个 Python AI库(程序员必备)
  • 风味优化/异味溯源 | 一站式GC-MS挥发性成分检测解决方案
  • Tiger_Rory
  • 红外测温发射率修正完全技术指南
  • 基于Simulink 2021A以上版本的混合储能系统下垂控制策略下的光储微网直流母线电压稳定性研究
  • 安全使用OpenClaw:从官方威胁模型出发,全面规避AI智能体风险
  • ADHD儿童运动疗法是什么?对注意力障碍的改善有何帮助?
  • 有没有小红书多账号管理工具?小红书私信聚合管理
  • MATLAB仿真平台实现储能参与调峰调频联合优化模型:超线性增益下的充放电策略优化与联合运行探索
  • 蓝桥杯备赛3.11
  • 通达信【超准主力专用抄底】副图与选股指标CJM99分享
  • linux学习笔记(yum命令)
  • 2026爆款外呼系统盘点|中小企业首选,高性价比闭眼入
  • swift-最新面试题二
  • 初级运维-基础命令
  • turtle学习
  • 这篇够全了:一线地理教学常用 GIS 工具与地图资源汇总
  • 医疗AI伦理漏洞全链路测试报告
  • 比亚迪闪充:不伤电池,不伤电网
  • mcs51单片机02
  • Asp.net core使用ayui表单Ajax提交请求,后台接收参数为空,模型绑定失败