MacBook M1(Monterey 12.3.1)导入torchvision触发std::length_error错误求助
解决M1 Mac导入torchvision时的std::length_error异常
我之前在M1 Monterey 12.x环境里碰到过完全一样的问题,大概率是torch和torchvision版本不兼容,或者Miniforge环境里的依赖冲突导致的。可以按下面的步骤尝试修复:
1. 彻底清理现有torch相关包
先激活你的conda环境,然后执行卸载命令,确保旧版本完全被移除:
conda uninstall torch torchvision torchaudio -y pip uninstall torch torchvision torchaudio -y
2. 安装适配M1架构的对应版本包
M1的ARM架构需要专门的构建包,推荐从conda-forge源安装,版本要严格匹配(这个组合在Monterey 12.3.1上亲测可用):
conda install -c conda-forge torch=1.12.0 torchvision=0.13.0 torchaudio=0.12.0 -y
3. 验证修复效果
进入Python交互环境,执行以下代码验证:
import torch import torchvision print(f"Torch版本:{torch.__version__}") print(f"Torchvision版本:{torchvision.__version__}")
如果没有抛出异常,就说明问题已经解决了。
额外建议
- 不要用默认PyPI源的pip安装torchvision,很多x86架构的包会和M1的ARM环境冲突;
- 如果上述步骤无效,可以尝试创建一个全新的conda环境再重新安装:
conda create -n torch_m1_env python=3.9 -c conda-forge -y conda activate torch_m1_env
然后重复步骤2的安装命令即可。
内容的提问来源于stack exchange,提问作者Michael Mateju
相关产品推荐
相关产品推荐

