其他
需要把 Python 代码打包成可分发库或 CLI…
用现代 pyproject.toml 标准创建、构建并发布可安装的 Python 包
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 48/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 85/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 53/100 ×0.15
适用场景
需要把 Python 代码打包成可分发库通用
解决思路
- 采用 src 布局:把代码放在 src/package_name/ 下,并在 pyproject.toml 中配置 [tool.setuptools.packages.find] where = ["src"],以避免误从源码目录导入、让测试导入更干净、隔离性更好
- 若追求简单可用扁平布局:把 package_name/ 直接放在项目根目录,但要注意不安装也能导入包,对库来说不够专业
- 创建最小项目结构:pyproject.toml、README.md、LICENSE、src/my_package/(含 __init__.py 和 module.py)、tests/test_module.py
- 在 pyproject.toml 中声明构建系统:[build-system] requires = ["setuptools>=61.0"],build-backend = "setuptools.build_meta"
- 在 [project] 段填写元数据:name、version、description、authors、readme、requires-python、dependencies
- 用 [project.optional-dependencies] 定义可选依赖组(如 dev = ["pytest>=7.0", "black>=22.0"])
- 在包内放置 py.typed 文件以支持类型提示
- 按需选择构建后端:setuptools(传统通用)、hatchling(现代)、flit(纯 Python 轻量)、poetry(依赖管理+打包)
- 遵循现代打包标准:PEP 517/518(构建系统要求)、PEP 621(pyproject.toml 元数据)、PEP 660(可编辑安装),用 pyproject.toml 作为单一配置来源
- 构建 wheel(.whl)和源码分发(.tar.gz)两种分发格式
- 发布前先发到 TestPyPI 测试,确认无误后再发布到 PyPI 公共仓库
- 如需私有分发,可发布到 JFrog、AWS CodeArtifact 等私有仓库
- 多包项目可采用 packages/package-a/src/package_a 与 packages/package-b/src/package_b 的结构组织
- 需要更详细的模式与完整示例时,阅读 references/details.md
适用边界 · 注意事项
- 不使用 Python 打包分发(例如只是内部脚本、不对外安装)时
- 项目不需要发布到 PyPI 或私有仓库、也不需要生成 wheel/sdist 时