0

0

Python项目PyPI包发布指南

DDD

DDD

发布时间:2025-08-06 21:44:29

|

1123人浏览过

|

来源于php中文网

原创

Python项目PyPI包发布指南

本教程旨在指导开发者将Python项目打包并发布到PyPI,使其可以通过pip工具便捷安装。文章详细介绍了从项目结构调整、pyproject.toml配置、包构建到使用twine上传的完整流程,帮助初学者高效完成Python包的发布,提升项目可访问性和复用性。

python项目打包并发布到pypi(python package index)是提升项目可访问性和复用性的关键一步。通过pypi,全球的开发者都可以使用pip install your-package-name命令轻松安装和使用您的代码。本指南将详细阐述将python项目转化为可分发pypi包的完整过程。

项目结构调整:拥抱 src 目录

在开始打包之前,建议对项目目录结构进行优化。采用src布局是一种最佳实践,它将实际的包代码与项目中的其他文件(如测试、文档、示例等)清晰地分离。这种结构有助于避免在打包时包含不必要的开发文件,并确保包的导入行为与安装后一致。

推荐的目录结构示例:

my_project/
├── src/
│   └── my_package/
│       ├── __init__.py
│       └── main.py
├── tests/
│   └── test_main.py
├── docs/
├── .gitignore
├── pyproject.toml
├── README.md
└── LICENSE

在这个结构中,my_package是您希望发布到PyPI的实际Python包。所有可安装的代码都应位于src/my_package/目录下。

核心配置:pyproject.toml 文件详解

pyproject.toml是现代Python项目用于定义构建系统和项目元数据的文件。它取代了传统的setup.py和setup.cfg,提供了更统一和声明式的配置方式。

立即学习Python免费学习笔记(深入)”;

在项目根目录下创建pyproject.toml文件,并按以下结构填充:

[build-system]
requires = ["setuptools>=61.0"]
build-backend = "setuptools.build_meta"

[project]
name = "my-ai-assistant" # 您的包名,应在PyPI上唯一
version = "0.1.0"         # 包的版本号,遵循语义化版本控制
description = "An open-source AI coding assistant written in Python." # 包的简短描述
readme = "README.md"      # 指向您的README文件
requires-python = ">=3.8" # 包所需的Python版本
license = { text = "MIT License" } # 许可证信息,或使用 file = "LICENSE"
authors = [
    { name = "Your Name", email = "your.email@example.com" },
]
keywords = ["ai", "coding", "assistant", "python"] # 关键词,方便搜索
classifiers = [ # 分类器,描述包的特性和兼容性
    "Programming Language :: Python :: 3",
    "License :: OSI Approved :: MIT License",
    "Operating System :: OS Independent",
    "Development Status :: 3 - Alpha", # 开发状态
    "Intended Audience :: Developers",
    "Topic :: Software Development :: Libraries :: Python Modules",
]
dependencies = [ # 包的运行时依赖
    "requests>=2.28.1",
    "openai>=0.27.0",
    # 更多依赖...
]

[project.urls]
Homepage = "https://github.com/00-Python/AI-Debug" # 项目主页
Repository = "https://github.com/00-Python/AI-Debug" # 代码仓库
Issues = "https://github.com/00-Python/AI-Debug/issues" # 问题跟踪

[project.optional-dependencies]
dev = [ # 开发环境依赖,例如用于测试或文档生成
    "pytest>=7.0",
    "build>=0.10.0",
    "twine>=4.0.0",
]

# 如果您的包需要查找 src 目录下的模块,需要此配置
[tool.setuptools.packages.find]
where = ["src"] # 查找包的目录

关键字段说明:

  • [build-system]: 定义了构建包所需的工具链。setuptools是常用的构建后端。
  • [project]: 包含包的所有核心元数据。
    • name: 包在PyPI上的名称,必须是唯一的。
    • version: 包的版本号,推荐遵循语义化版本控制(例如MAJOR.MINOR.PATCH)。
    • description、readme、requires-python、license、authors、keywords、classifiers:提供包的详细信息,有助于用户了解和发现您的包。
    • dependencies: 列出您的包运行时所依赖的其他PyPI包。
  • [project.urls]: 提供项目相关的外部链接。
  • [project.optional-dependencies]: 定义可选的依赖项组,例如用于开发、测试或特定功能。
  • [tool.setuptools.packages.find]: 如果您的代码位于src目录下,此配置告知setuptools在哪里查找包。

构建分发包:生成轮子与源码包

配置好pyproject.toml后,您可以使用build工具来生成可分发的包文件。首先,确保您已安装build工具:

pip install build

然后,在项目的根目录下执行构建命令:

简约流程导航箭头编号矢量模板
简约流程导航箭头编号矢量模板

简约流程导航箭头编号矢量模板适用于科技公司的宣传材料、商务演示文稿、产品发布会议的背景板、创新项目的报告封面、科技论坛和研讨会的邀请函、科学展览的指南、科技产品的用户界面、未来主义风格的概念艺术等与科技和商业推广相关设计的AI格式素材。

下载
python -m build

执行成功后,会在项目根目录下生成一个dist/目录。该目录通常包含两个文件:

  • .whl文件(Wheel):这是一个预编译的二进制分发包,通常包含纯Python代码和一些元数据,可以直接安装,速度快。
  • .tar.gz文件(Source Distribution):这是一个源码分发包,包含包的源代码和构建信息,可以在目标机器上进行编译安装。

这两个文件就是您的PyPI包,它们将上传到PyPI供用户下载。

发布上线:使用 twine 上传至 PyPI

将构建好的包上传到PyPI需要使用twine工具。twine是一个安全的上传工具,它能确保您的包在上传过程中不会被篡改。

  1. 安装 twine:

    pip install twine
  2. 创建 PyPI 账户和 API Token: 如果您还没有PyPI账户,请访问PyPI官网注册。 为了安全起见,推荐使用API Token进行认证,而不是直接使用用户名和密码。登录PyPI账户后,导航到“Account settings” -> “API tokens”,生成一个新的API Token。请务必保存好生成的Token,因为它只显示一次。

  3. 上传包: 在项目根目录下,执行以下命令上传dist/目录中的所有包文件:

    python -m twine upload dist/*

    twine会提示您输入PyPI用户名(通常是__token__)和API Token作为密码。

    提示: 在正式发布到PyPI之前,您可以使用TestPyPI进行测试。TestPyPI是一个用于测试包上传和安装的沙盒环境。上传到TestPyPI的命令是:

    python -m twine upload --repository testpypi dist/*

    在TestPyPI上测试成功后,再上传到正式的PyPI。

重要提示与最佳实践

  • 版本管理: 每次发布新版本时,务必更新pyproject.toml中的version字段。遵循语义化版本控制(MAJOR.MINOR.PATCH)有助于用户理解版本间的兼容性。
  • 许可证(License): 在您的项目中包含一个LICENSE文件是至关重要的。它明确了他人如何使用您的代码。选择一个合适的开源许可证,并在pyproject.toml中正确声明。
  • README.md: 一个清晰、详细的README.md文件是包的门面。它应该包含项目的简介、安装指南、使用示例、API文档链接等,帮助用户快速上手。
  • 虚拟环境: 在开发和打包过程中始终使用Python虚拟环境(如venv或conda),以避免依赖冲突和污染全局Python环境。
  • 测试: 在发布任何版本之前,务必对您的包进行彻底的测试,确保其功能完善且稳定。

通过遵循上述步骤和最佳实践,您将能够成功地将您的Python项目打包并发布到PyPI,让更多开发者能够发现、使用并贡献您的开源项目。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
pip安装使用方法
pip安装使用方法

安装步骤:1、确保Python已经正确安装在您的计算机上;2、下载“get-pip.py”脚本;3、按下Win + R键,然后输入cmd并按下Enter键来打开命令行窗口;4、在命令行窗口中,使用cd命令切换到“get-pip.py”所在的目录;5、执行安装命令;6、验证安装结果即可。大家可以访问本专题下的文章,了解pip安装使用方法的更多内容。

340

2023.10.09

更新pip版本
更新pip版本

更新pip版本方法有使用pip自身更新、使用操作系统自带的包管理工具、使用python包管理工具、手动安装最新版本。想了解更多相关的内容,请阅读专题下面的文章。

416

2024.12.20

pip设置清华源
pip设置清华源

设置方法:1、打开终端或命令提示符窗口;2、运行“touch ~/.pip/pip.conf”命令创建一个名为pip的配置文件;3、打开pip.conf文件,然后添加“[global];index-url = https://pypi.tuna.tsinghua.edu.cn/simple”内容,这将把pip的镜像源设置为清华大学的镜像源;4、保存并关闭文件即可。

761

2024.12.23

python升级pip
python升级pip

本专题整合了python升级pip相关教程,阅读下面的文章了解更多详细内容。

351

2025.07.23

登录token无效
登录token无效

登录token无效解决方法:1、检查token的有效期限,如果token已经过期,需要重新获取一个新的token;2、检查token的签名,如果签名不正确,需要重新获取一个新的token;3、检查密钥的正确性,如果密钥不正确,需要重新获取一个新的token;4、使用HTTPS协议传输token,建议使用HTTPS协议进行传输 ;5、使用双因素认证,双因素认证可以提高账户的安全性。

6221

2023.09.14

登录token无效怎么办
登录token无效怎么办

登录token无效的解决办法有检查Token是否过期、检查Token是否正确、检查Token是否被篡改、检查Token是否与用户匹配、清除缓存或Cookie、检查网络连接和服务器状态、重新登录或请求新的Token、联系技术支持或开发人员等。本专题为大家提供token相关的文章、下载、课程内容,供大家免费下载体验。

823

2023.09.14

token怎么获取
token怎么获取

获取token值的方法:1、小程序调用“wx.login()”获取 临时登录凭证code,并回传到开发者服务器;2、开发者服务器以code换取,用户唯一标识openid和会话密钥“session_key”。想了解更详细的内容,可以阅读本专题下面的文章。

1071

2023.12.21

token什么意思
token什么意思

token是一种用于表示用户权限、记录交易信息、支付虚拟货币的数字货币。可以用来在特定的网络上进行交易,用来购买或出售特定的虚拟货币,也可以用来支付特定的服务费用。想了解更多token什么意思的相关内容可以访问本专题下面的文章。

1368

2024.03.01

2026赚钱平台入口大全
2026赚钱平台入口大全

2026年最新赚钱平台入口汇总,涵盖任务众包、内容创作、电商运营、技能变现等多类正规渠道,助你轻松开启副业增收之路。阅读专题下面的文章了解更多详细内容。

54

2026.01.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
最新Python教程 从入门到精通
最新Python教程 从入门到精通

共4课时 | 22.4万人学习

Django 教程
Django 教程

共28课时 | 3.7万人学习

SciPy 教程
SciPy 教程

共10课时 | 1.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号