导入torch触发ImportError异常,无改动突然失效求助
解决Mac OS X下
ImportError: numpy.core.multiarray failed to import的问题 我之前在Mac上也碰到过几乎一模一样的问题,试了常规的重装numpy、重建环境都没用,最后靠下面几个针对性的步骤解决了,你可以挨个尝试:
1. 匹配torch和numpy的兼容版本
Python3.6的numpy最高支持到1.21.6,而PyTorch对于Python3.6的最新兼容版本是1.13.1,你之前可能装了过高或过低的numpy版本导致不兼容。试试指定版本重装:
# 先卸载现有numpy pip uninstall numpy -y # 安装Python3.6兼容的最高numpy版本 pip install numpy==1.21.6 --force-reinstall
之后再尝试import torch,如果还是不行,接着往下。
2. 检查Mac架构适配(重点针对Apple Silicon/Intel差异)
Mac的芯片架构差异很容易导致这类导入问题:
- 先确认当前Python环境的架构:
python -c "import platform; print(platform.machine())"- 如果输出是
arm64(Apple Silicon):卸载现有numpy,改用conda-forge的arm64专属包安装:pip uninstall numpy -y conda install -c conda-forge numpy - 如果输出是
x86_64(Intel):清理Python的导入缓存和conda缓存,避免损坏的缓存导致问题:
之后重新安装numpy和torch。rm -rf ~/.python-eggs conda clean -a -y
- 如果输出是
3. 排查环境路径冲突
Mac自带的系统Python可能和你的conda环境产生路径冲突,导致Python加载了系统里的numpy而不是环境内的:
- 先确认当前用的是conda环境的Python:
输出应该是which python/Users/cheng/anaconda/envs/py36/bin/python,如果不是,重新激活环境:conda activate py36 - 检查numpy的实际加载路径:
如果输出不在python -c "import numpy; print(numpy.__file__)"/Users/cheng/anaconda/envs/py36/lib/python3.6/site-packages/下,说明路径被污染了,执行下面的命令清除系统Python路径影响后再试:unset PYTHONPATH python -c "import torch"
4. 彻底重装torch(关联正确的numpy版本)
有时候torch安装时依赖的numpy版本和你后来装的不一致,导致底层依赖断裂:
# 卸载torch pip uninstall torch -y # 安装Python3.6+Mac兼容的torch版本(CPU版,因为Python3.6不支持MPS) pip install torch==1.13.1 torchvision==0.14.1 torchaudio==0.13.1 --extra-index-url https://download.pytorch.org/whl/cpu
安装完成后直接尝试import torch,大概率能解决问题。
内容的提问来源于stack exchange,提问作者Shiloh_C




