M1 Mac使用Conda创建环境出现无显性冲突的UnsatisfiableError如何解决
问题成因
你遇到的不是显式的包版本冲突,本质是M1(arm64架构)的系统适配问题:
- apache-beam 2.31.0是2021年发布的旧版本,conda-forge仓库从未提供适配arm64架构的该版本安装包,仅支持x86_64架构
- 你使用的是arm64版的miniforge,conda默认只会拉取适配arm64架构的包,找不到匹配版本时就会输出逻辑混乱的冲突提示,不会明确告知架构缺失问题
- 冲突日志里你看到的pyarrow、python版本范围看起来兼容,是因为conda只打印了版本约束,没打印背后的架构约束
解决方法
根据你的需求选择对应方案即可:
方案1:模拟x86架构运行(适配性最高,无需改依赖版本)
如果必须使用apache-beam 2.31.0、pyarrow 4.0.1的固定版本,直接让conda拉取x86架构的包通过Rosetta 2转译运行即可,有两种操作方式:
- 方式一:右键点击终端(Terminal/iTerm),选择「显示简介」,勾选「使用Rosetta打开」,重启终端后重新执行
conda env create即可正常创建环境 - 方式二:无需修改终端设置,执行命令时临时指定架构:
CONDA_SUBDIR=osx-64 conda env create,环境创建完成后进入环境执行conda config --env --set subdir osx-64,后续在该环境装包会默认拉取x86版本
方案2:升级依赖版本(原生arm64运行,性能更好)
如果可以调整依赖版本,修改environment.yml的依赖为支持arm64的版本即可,参考配置:
name: harmonic-backend channels: - conda-forge dependencies: - python==3.8.10 - apache-beam>=2.35.0 # 2.35.0及以上版本开始提供arm64架构构建 - pyarrow>=5.0.0 # 适配arm64架构下python3.8的版本
修改后重新执行conda env create即可原生运行,无需转译。
内容的提问来源于stack exchange,提问作者Sumit Ghosh
相关产品推荐
相关产品推荐

