news 2026/8/30 0:11:03

python包发布流程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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里管理已经上传的项目,如果旧项目删除了,重新上传也必须换版本号
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/14 17:14:29

QSS使用

QSS简介QSS(Qt Style Sheets)是Qt框架中用于自定义控件外观的样式表语言,类似于CSS。通过QSS可以修改控件的颜色、字体、边框等属性,实现界面美化。基本语法结构QSS语法与CSS类似,由选择器和声明块组成:QPu…

作者头像 李华
网站建设 2026/7/14 17:14:14

基于MATLAB的语音数据特征提取、分类、精度计算及混淆矩阵绘制

基于MATLAB的语音数据特征提取,然后进行分类,计算精度并画出混淆矩阵 三年前第一次用MATLAB处理语音分类时,我被满屏的梅尔倒谱系数和时域特征绕得头晕。今天咱们用最直白的方式,把语音分类的完整流程走一遍——从.wav文件到混淆矩…

作者头像 李华
网站建设 2026/7/14 17:14:13

2026年AI视频生成神器深度测评:Runway Pika Sora 谁是王者

2026年AI视频生成神器深度测评:Runway Pika Sora 谁是王者 摘要 2026年AI视频生成技术迎来爆发式增长。Runway、Pika Labs、Sora等工具各有特色,谁才是视频创作者的最佳选择?本文进行全面深度测评。 一、AI视频生成市场概况 2026年&#xff0…

作者头像 李华
网站建设 2026/7/14 17:14:13

使用 sudo 访问受限目录的方法

直接使用 sudo cd 是无效的,因为 cd 是 shell 内置命令,无法通过 sudo 直接提升权限。以下是几种正确的方法:方法一:使用 sudo su 切换到 root 用户sudo su cd /path/to/directory通过 sudo su 切换到 root 用户后,再执…

作者头像 李华
网站建设 2026/7/14 17:14:14

flashList

FlashList 学习总结文档 一、简介 FlashList 是 Shopify 开源的 React Native 高性能列表组件,基于 RecyclerListView 实现,旨在替代 FlatList。它的核心优势在于: 视图回收:只渲染可见区域附近的元素,大幅降低内存占用…

作者头像 李华