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

Poetry如何为不同架构Mac配置sys_platform依赖标记

Poetry 配置PyTorch Mac多架构安装标记参考

核心标记规则说明

  • sys_platform == 'macosx' 会同时匹配Intel架构(x86_64)和ARM架构(Apple Silicon M系列)的macOS设备。该标记仅判断操作系统类型,不区分CPU架构,你之前用它单独匹配Intel平台的写法存在问题,会在ARM架构Mac上误装x86版本的PyTorch包。
  • 注意:Python 3.3及之后版本在macOS环境下的sys_platform返回值为darwin,仅3.3之前的旧版本返回macosx,做兼容配置时建议同时判断两个值,避免漏匹配。

分架构匹配的正确写法

要区分Mac设备的CPU架构,需要组合platform_machine标记(该标记对应当前运行Python环境的CPU架构标识,遵循PEP 508标准规定,行为固定无需跨设备实测验证):

  • ARM架构(Apple Silicon原生Python环境)Mac专属匹配标记:
    markers = "(sys_platform == 'darwin' or sys_platform == 'macosx') and platform_machine == 'arm64'"
    
  • Intel架构(x86_64原生Python/Rosetta转译运行x86 Python环境)Mac专属匹配标记:
    markers = "(sys_platform == 'darwin' or sys_platform == 'macosx') and platform_machine == 'x86_64'"
    

pyproject.toml 配置示例

以CPU版本PyTorch的多架构配置为例:

[[tool.poetry.source]]
name = "pytorch-cpu"
# 源地址配置为PyTorch官方CPU wheel源即可
priority = "supplemental"

[tool.poetry.dependencies]
python = ">=3.9,<3.13"
torch = [
    {version = "^2.3.0", source = "pytorch-cpu", markers = "(sys_platform == 'darwin' or sys_platform == 'macosx') and platform_machine == 'arm64'"},
    {version = "^2.3.0", source = "pytorch-cpu", markers = "(sys_platform == 'darwin' or sys_platform == 'macosx') and platform_machine == 'x86_64'"},
    # 可在此处追加Linux、Windows等其他平台的匹配规则
]

补充说明

Apple Silicon设备如果通过Rosetta 2转译运行x86版本的Python,platform_machine会返回x86_64,此时会匹配Intel版本的安装包,属于符合预期的行为——Poetry是根据当前运行的Python环境架构选择安装包,而非设备硬件本身的架构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 21:45:42