setuptools是python官方推荐的构建和分发工具,用于将项目打包为wheel或源码包以便pip安装及发布到pypi,替代distutils并支持依赖声明、入口点和自动发现包等功能。

什么是setuptools,为什么用它
setuptools 是 Python 官方推荐的构建和分发工具,用来把你的脚本、模块或项目打包成可安装的格式(如 wheel 或源码包),方便别人用 pip install 一键安装,也便于你自己发布到 PyPI。它替代了早期的 distutils,支持依赖声明、入口点(entry points)、自动发现包等功能。
准备一个最简可打包项目结构
假设你写了一个小工具 hello_cli.py,想把它打包成命令行程序。先组织好目录:
my_hello/
├── hello_cli.py
├── README.md
└── setup.py
其中 hello_cli.py 包含一个可调用的 main 函数:
立即学习“Python免费学习笔记(深入)”;
def main():
print("Hello from my package!")
编写 setup.py —— 核心配置文件
这是 setuptools 的“说明书”,告诉 pip 这个包叫什么、包含什么、依赖谁:
from setuptools import setup, find_packages
setup(
name="my-hello",
version="0.1.0",
description="A simple CLI greeting tool",
author="Your Name",
py_modules=["hello_cli"],
entry_points={
"console_scripts": [
"hello=hello_cli:main"
]
},
)
- py_modules 列出单个 .py 文件(不是包);如果是包,改用 packages=find_packages()
- entry_points 让安装后生成命令行命令 hello,直接调用 hello_cli.main
- 不写 install_requires 就表示无第三方依赖;有依赖就加上,例如 install_requires=["requests"]
构建并本地测试安装
在项目根目录(即 setup.py 所在目录)运行:
python -m build
会生成 dist/my_hello-0.1.0-py3-none-any.whl。接着本地试装:
pip install dist/my_hello-0.1.0-py3-none-any.whl
安装成功后,终端输入 hello 就能看到输出。卸载用 pip uninstall my-hello。
注意:推荐使用虚拟环境测试,避免污染全局 Python 环境。










