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

如何为基于setuptools的pip项目按操作系统指定不同包依赖?

基于setuptools实现跨平台依赖自动选择安装

针对需要根据操作系统自动选择安装不同依赖包的场景(比如Linux装tensorflow、Mac装tensorflow-macos),用setuptools可以通过以下两种方式实现:

方法一:在setup.py中配置带环境标记的依赖

直接在install_requires里给每个依赖加上PEP 508标准的环境标记,pip会根据当前系统自动筛选:

from setuptools import setup

setup(
    name="your-project-name",
    version="0.1.0",
    # 其他项目配置(如author、description等)
    install_requires=[
        # Linux系统安装tensorflow
        "tensorflow; sys_platform == 'linux'",
        # MacOS系统安装tensorflow-macos
        "tensorflow-macos; sys_platform == 'darwin'"
    ]
)

方法二:通过pyproject.toml配置(推荐现代项目使用)

如果项目已经采用pyproject.toml管理构建配置,同样可以添加带环境标记的依赖:

[project]
name = "your-project-name"
version = "0.1.0"
# 其他项目配置
dependencies = [
    "tensorflow; sys_platform == 'linux'",
    "tensorflow-macos; sys_platform == 'darwin'"
]

[build-system]
requires = ["setuptools>=61.0"]
build-backend = "setuptools.build_meta"

进阶:更精细的平台区分

如果需要针对Mac的不同架构(比如Intel vs Apple Silicon)追加依赖,还可以扩展环境标记:

# setup.py示例
install_requires=[
    "tensorflow; sys_platform == 'linux'",
    "tensorflow-macos; sys_platform == 'darwin'",
    # Apple Silicon的Mac额外安装tensorflow-metal加速
    "tensorflow-metal; sys_platform == 'darwin' and platform_machine == 'arm64'"
]

注意事项

  • 环境标记的语法需符合PEP 508规范,常用的标记包括sys_platform(系统平台)、platform_machine(硬件架构)等
  • 确保使用的pip版本不低于19.0,旧版本可能不支持环境标记筛选功能

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 02:41:03