You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用pyproject.toml和setuptools实现cool包的可选安装?

实现可选安装子包的配置方案

项目结构

pyproject.toml
src/
    cool/
        __init__.py
        ...
    cool_cli/
        __init__.py
        ...

需求

支持两种安装方式:

pip install cool  # 仅安装cool核心包
pip install cool[cli] # 同时安装cool和cool_cli包及对应依赖

当前配置问题

你现有的pyproject.toml会默认把cool和cool_cli全部安装,无法区分两种安装场景,需要调整配置实现按需安装。

解决方案

修改pyproject.toml,通过setuptools的额外配置关联可选包与依赖,具体配置如下:

[project]
name = "cool"
requires-python = ">=3.11"
version = "0.0.1"
readme = "readme.md"

dependencies = [
   "httpx"
]

[project.optional-dependencies]
cli = [
    "click"
]

[tool.setuptools]
# 指定包的根目录为src,适配你的项目布局
package-dir = {"": "src"}
# 默认仅安装cool核心包
packages = ["cool"]
include-package-data = true

# 绑定cli额外依赖与cool_cli包
[tool.setuptools.extras]
cli = ["cool_cli"]

配置说明

  • package-dir = {"": "src"}:告知setuptools从src目录下查找包,这是src布局项目的必要配置。
  • 默认packages = ["cool"]:确保执行pip install cool时仅安装核心包。
  • [tool.setuptools.extras]:将cool_cli包与cli额外依赖绑定,用户执行pip install cool[cli]时,会自动安装cool_cli包以及click依赖。

内容的提问来源于stack exchange,提问作者zzz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 18:25:12