如何用Poetry为不同CPU架构重复指定同一依赖(如x86/x86_64)
解决Poetry本地多架构依赖包的配置问题
针对你遇到的Poetry无法重复指定同一依赖(不同架构的本地包)的问题,有几个实用的解决办法:
利用环境标记自动匹配
Poetry支持通过markers参数为不同环境指定对应的依赖包,这样不会出现重复定义的冲突。你可以修改pyproject.toml为:[tool.poetry.dependencies] python = "^3.9" lru-dict = [ { path = "./packages/lru_dict-1.1.6-cp39-cp39-win_amd64.whl", markers = "sys_platform == 'win32' and platform_machine == 'AMD64'" }, { path = "./packages/lru_dict-1.1.6-cp39-cp39-win32.whl", markers = "sys_platform == 'win32' and platform_machine == 'x86'" } ]这样Poetry会根据当前运行环境的系统架构,自动选择对应的本地包安装。
搭建本地私有PyPI仓库
把不同架构的lru-dict包都上传到本地私有仓库(比如用devpi、pypiserver这类轻量工具),之后在Poetry里配置这个私有仓库地址,就能像使用PyPI一样让工具自动适配架构。
配置示例:
先在pyproject.toml里只写版本:[tool.poetry.dependencies] python = "^3.9" lru-dict = "1.1.6"然后添加私有仓库并安装:
poetry config repositories.my-local-repo http://你的私有仓库地址 poetry add lru-dict --source my-local-repo手动指定包路径(临时方案)
如果只是单环境下临时构建,可以不在配置文件里写死,直接在安装时指定对应架构的包:# 64位Windows环境执行 poetry add ./packages/lru_dict-1.1.6-cp39-cp39-win_amd64.whl # 32位Windows环境执行 poetry add ./packages/lru_dict-1.1.6-cp39-cp39-win32.whl这种方式适合快速测试,但跨环境打包时不如前两种方法灵活。
内容的提问来源于stack exchange,提问作者Musharraf
相关产品推荐
相关产品推荐

