张芷铭的个人博客

setuptools

setuptools 是 Python 最主流的打包和分发工具,用于构建、安装和发布 Python 包。

核心功能

  • 构建源码包(sdist)和二进制包(wheel)
  • 依赖管理
  • 入口点定义(命令行脚本)
  • 与 pip、PyPI 集成

现代配置方式

推荐使用 pyproject.toml(PEP 621),而非传统的 setup.py

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
[build-system]
requires = ["setuptools>=61.0"]
build-backend = "setuptools.build_meta"

[project]
name = "my-package"
version = "0.1.0"
dependencies = ["requests>=2.25.0"]

[project.scripts]
my-cli = "my_package.cli:main"

传统 setup.py(不推荐)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
from setuptools import setup, find_packages

setup(
    name="my-package",
    version="0.1.0",
    packages=find_packages(),
    install_requires=["requests>=2.25.0"],
    entry_points={
        "console_scripts": ["my-cli=my_package.cli:main"]
    }
)

常用命令

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# 构建
python -m build

# 安装
pip install .

# 可编辑安装
pip install -e .

# 发布到 PyPI
twine upload dist/*

参考

  • [[pyproject.toml]]:现代 Python 项目配置
  • 官方文档:https://setuptools.pypa.io/

Comments