Conda 创建失败?numba/llvmlite 构建错误解决方法
本文针对在macOS上使用Conda从.yml文件创建环境时,遇到numba和llvmlite构建失败的问题,提供了一种基于模拟的解决方案。通过强制Conda使用osx-64子目录,可以绕过AppleSilicon架构上的编译问题,从而成功创建环境。同时,文章还建议优化依赖管理,优先使用CondaForge提供的预编译包,以提高安装效率和兼容性。

正如摘要所述,本文旨在解决在 macOS (特别是 Apple Silicon 芯片的 Mac) 上,使用 Conda 从 .yml 文件创建环境时,遇到 numba 和 llvmlite 构建失败的问题。 这种问题通常是由于某些旧版本的软件包无法在 Apple Silicon 架构上编译造成的。
解决方案:使用模拟环境
一个可能的解决方案是强制 Conda 使用 osx-64 子目录,这实际上是在模拟 x86_64 架构。这可以通过以下步骤实现:
创建模拟环境:
使用以下命令创建 Conda 环境,并指定 CONDA_SUBDIR 环境变量为 osx-64:
CONDA_SUBDIR=osx-64 conda env create --file asoid.yml
这个命令会告诉 Conda 使用针对 x86_64 架构的软件包,从而避免在 Apple Silicon 上编译。
永久设置环境子目录:
如果上述步骤成功创建了环境,建议将该环境永久设置为 osx-64 only。激活环境后,执行以下命令:
conda activate asoid conda config --env --set subdir osx-64
这将确保每次激活该环境时,Conda 都会使用 osx-64 子目录,避免潜在的兼容性问题。
深入理解问题和优化建议
需要注意的是,虽然问题表现为 Conda 环境创建失败,但根本原因在于 Pip 在安装依赖时构建 numba 和 llvmlite 失败。Conda 主要负责提供 Python 和 Pip,而实际的包安装和构建过程由 Pip 完成。因此,通过指示 Conda 安装非 ARM 版本的 Python,可以绕过 Pip 的构建问题。
除了使用模拟环境,还可以考虑以下优化建议:
放宽版本约束: 在 requirements.txt 文件中,尝试放宽一些版本约束,允许 Pip 安装更新的版本。新版本的软件包可能已经针对 Apple Silicon 进行了优化,从而避免编译错误。
优先使用 Conda Forge: 编辑 .yml 文件,尽可能地从 Conda Forge 渠道安装软件包,而不是使用 Pip。Conda Forge 提供了大量预编译的软件包,可以避免不必要的编译过程,提高安装效率和兼容性。
例如,如果 .yml 文件中包含以下内容:
dependencies: - pip: - numba==0.50.0 - llvmlite==0.34.0可以尝试修改为:
channels: - conda-forge - defaults dependencies: - numba=0.50.0 # 移除版本号,允许安装最新版本 - llvmlite # 移除版本号,允许安装最新版本
这将告诉 Conda 优先从 Conda Forge 渠道安装 numba 和 llvmlite。
总结
在 macOS 上使用 Conda 创建环境时,遇到 numba 和 llvmlite 构建失败的问题,通常是由于架构兼容性引起的。通过使用模拟环境、放宽版本约束和优先使用 Conda Forge 提供的预编译包,可以有效解决这个问题。选择哪种方法取决于具体情况和需求,但最终目标都是为了成功创建并运行所需的开发环境。
Windows 10 是一款微软推出的经典操作系统,拥有硬件兼容性与多任务处理能力。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。
极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。
















