You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

导入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缓存,避免损坏的缓存导致问题:
      rm -rf ~/.python-eggs
      conda clean -a -y
      
      之后重新安装numpy和torch。

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

火山引擎 最新活动