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

如何用Poetry实现:安装mypackage全量依赖、mypackage[core]仅装核心依赖?

实现默认全量依赖、[core]标签安装核心依赖的Poetry配置

要实现你需要的反向extras效果(默认装全量,[core]装最小核心),可以通过Poetry的default-extras配置和嵌套extras组来实现,具体步骤如下:

1. 配置pyproject.toml

将核心依赖和额外依赖拆分为两个extras组,同时设置默认安装全量依赖组:

[tool.poetry]
name = "mypackage"
version = "0.1.0"
description = "你的包描述"
authors = ["你的名字 <你的邮箱>"]
readme = "README.md"
default-extras = ["full"]  # 关键:默认安装full组的依赖

[tool.poetry.dependencies]
python = "^3.8"  # 根据你的包支持的Python版本调整

[tool.poetry.extras]
# 核心依赖组:仅包含运行基础API必需的轻量依赖
core = [
    "requests>=2.25.1",
    "pydantic>=1.8.2"
]
# 全量依赖组:包含核心依赖+体积大/构建耗时的额外依赖
full = [
    "mypackage[core]",  # 嵌套依赖core组,避免重复写核心依赖
    "tensorflow>=2.8.0",  # 示例:体积庞大的依赖
    "pyspark>=3.2.0",     # 示例:小众/构建耗时的依赖
    "scikit-learn>=1.0.2"
]

配置说明

  • default-extras = ["full"]:指定用户执行pip install mypackage时,自动安装full组的所有依赖(核心+额外)。
  • core组:仅包含运行包核心API必需的最小依赖。
  • full组:通过mypackage[core]嵌套依赖核心组,再添加那些可选的重依赖。

2. 验证安装效果

  • 安装全量依赖:执行pip install mypackage,会自动安装core+full组的所有依赖。
  • 安装核心依赖:执行pip install mypackage[core],仅安装core组的轻量依赖,跳过额外的重依赖。

3. 代码中处理依赖缺失

为了给用户更好的体验,在需要额外依赖的API中添加导入检查,提示用户安装全量版本:

# mypackage/heavy_feature.py
try:
    import tensorflow as tf
except ImportError:
    raise RuntimeError(
        "该功能需要TensorFlow依赖,请执行 `pip install mypackage` 或 `pip install mypackage[full]` 安装全量依赖"
    )

def heavy_processing():
    # 使用TensorFlow的代码
    pass

注意事项

  • 确保你的Poetry版本≥1.2.0,default-extras是Poetry 1.2.0及以上版本才支持的特性。
  • 发布前可以用poetry build生成包文件,然后用pip install dist/mypackage-0.1.0.tar.gz测试安装效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 12:25:58