python项目打包发布核心是用pyproject.toml(推荐)定义元数据和构建逻辑,包含[build-system]与[project]节,声明依赖、入口点等;通过python -m build打包,twine upload发布至pypi。

Python项目打包发布,核心是用 setuptools 定义元数据和构建逻辑,生成可安装的分发包(如 wheel 或 sdist)。关键不在“怎么装工具”,而在于“怎么写好 setup.py 或 pyproject.toml”。
用 pyproject.toml 替代 setup.py(推荐)
从 setuptools 61.0+ 和 PEP 621 开始,官方推荐用 pyproject.toml 声明项目配置,更简洁、无执行风险、兼容现代构建工具(如 build、pip)。
- 根目录下新建
pyproject.toml,至少包含[build-system]和[project]两节 -
[build-system]指定构建依赖,例如:
requires = ["setuptools>=61.0", "wheel"]
build-backend = "setuptools.build_meta" -
[project]填写名称、版本、作者、依赖等,例如:
name = "mytool"
version = "0.1.0"
description = "A simple CLI tool"
requires-python = ">=3.8"
dependencies = ["requests>=2.25.0"]
定义入口点(让命令行可用)
如果项目提供可执行命令(如 mytool --help),需在 [project.entry-points."console_scripts"] 中声明。
软件介绍:金戈企业建站系统不仅是一份免费的企业建站代码包,而且它还是完全开源的,它倾注了作者1个多月来日日夜夜的心血,虽然有些地方没做到尽善尽美,可我相信在接下来的日子里我会通过反馈信息让她更丰满实用起来。1.完美的摸板机制,即使你对php一点也不懂,只要你会做网页。就可以立即打造新颖别致的网站界面(摸板制作方法手册正在紧张制作中,稍后发布)可惜作者精力有限,目前只提供一套摸板。不过只是暂时的2.
- 格式为
"命令名 = 包名.模块名:函数名" - 例如:
[project.entry-points."console_scripts"]
"mytool" = "mytool.cli:main" - 确保
mytool/cli.py中有def main():函数,且能直接运行
打包与上传流程(本地到 PyPI)
完成配置后,打包和发布只需三步,无需手动操作 dist 目录。
立即学习“Python免费学习笔记(深入)”;
- 安装构建工具:
pip install build twine - 生成分发包:
python -m build(生成dist/mytool-0.1.0-py3-none-any.whl和.tar.gz) - 上传到 PyPI:
twine upload dist/*(首次需用 PyPI 账户凭证)
常见避坑提示
很多失败源于小细节,不是工具问题。
- 版本号必须符合 PEP 440(如
0.1.0、1.2.3a1,不能用v1.0或1.0.0-dev) - 包结构要规范:源码放在
src/或与pyproject.toml同级的包目录中,避免顶层混杂 .py 文件 - 依赖不要写死版本(如
requests==2.28.0),除非有强兼容约束;优先用requests>=2.25.0 - 测试安装:用
pip install --no-deps --force-reinstall ./dist/mytool-0.1.0-py3-none-any.whl验证是否可装可运行









