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
相关产品推荐
相关产品推荐

