正如摘要所述,本文旨在解决在 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 提供的预编译包,可以有效解决这个问题。选择哪种方法取决于具体情况和需求,但最终目标都是为了成功创建并运行所需的开发环境。
以上就是解决 Conda 环境创建失败:numba 和 llvmlite 构建错误的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号