导入Matplotlib与PyTorch时遇ImportError及OSError(WinError126)问题
问题排查与解决方案
1. 核心版本冲突分析
- Python 3.12与PyTorch 1.13.1的兼容性问题:PyTorch 1.13.1官方仅支持Python 3.7~3.10,Python 3.12作为新版本,部分底层API变动导致旧版PyTorch无法正常导入,这是触发错误的核心原因。
- NumPy 1.26.4与旧版库的适配问题:NumPy 1.26.x对旧版科学计算库的兼容性较差,PyTorch 1.13.1、Matplotlib的稳定版本均推荐搭配NumPy 1.23.x~1.25.x版本,过高的NumPy版本会导致依赖加载失败。
2. 分步修复方案
方案1:构建兼容的全新虚拟环境
先创建完全匹配版本的环境,避免残留冲突:
# 创建指定版本的基础环境 conda create -n ml_env python=3.10 pytorch=1.13.1 torchvision=0.14.1 torchaudio=0.13.1 pytorch-cuda=11.6 -c pytorch -c nvidia # 激活环境 conda activate ml_env # 安装其他依赖并锁定NumPy版本 conda install numpy=1.25.2 matplotlib seaborn flwr=1.10.0 ray ipywidgets shap -c conda-forge
方案2:修复Jupyter内核关联
确保Jupyter能识别新环境的内核,避免仍使用损坏的旧内核:
# 在新环境中安装ipykernel conda install ipykernel # 注册内核到Jupyter python -m ipykernel install --user --name ml_env --display-name "Python (ml_env)"
启动Jupyter后,在右上角内核选择器中切换到Python (ml_env)运行脚本。
方案3:清理系统残留缓存
删除可能存在的损坏编译缓存和conda缓存:
# 删除Python编译缓存文件 find ~ -name "__pycache__" -type d -exec rm -rf {} + # 清理conda所有缓存包和临时文件 conda clean -a -y
3. 额外排查方向
- 检查系统环境变量:确认
LD_LIBRARY_PATH(Linux/macOS)或PATH(Windows)未被其他软件修改,避免覆盖PyTorch、Matplotlib依赖的系统库路径。 - 验证GPU驱动:如果使用CUDA,确保驱动版本适配CUDA 11.6(推荐450.80.02及以上版本),驱动不兼容会触发OSError。
内容的提问来源于stack exchange,提问作者wzk
相关产品推荐
相关产品推荐

