前几天做一个简单的演示,用` pip install matplotlib ` 安装 Matplotlib 后,使用 ` import matplotlib `时,提示 ._path 错误。经过不懈努力,最终解决,与各位分享。
1. 问题描述
1.1 问题现象
1.1.1 出现问题的最初环境
正在搭建一个 Visual Studio Code + Python 的环境准备做一些演示工作。环境如下:
- 通过 VS Code 官网
https://code.visualstudio.com/ 下载并安装 VS Code。 - 通过 python.org 官网下载并安装 Python。
- 在 VS Code 中安装 Python 扩展插件。
- 在终端界面中使用 pip install matplotlib 安装 Matplotlib
- 配置VS Code 选择解释器。
以上过程一切正常。编写 print("Hello World") 并运行正常。
1.1.2 问题现象:
安装 matplotlib 显示一切正常。但是,一段简单的使用 matplotlib 的代码,却报如下错误:
“
ImportError: DLL load failed while importing _path: The specified module could not be found.
”
界面如下:
错误提示中所述 transforms.py 第49行内容如下:
1.2 问题探索 -(不是如下原因,大家避坑)
猜测了多种可能,虚拟机安装了很多遍,发现如下不是导致问题的可能原因,帮助大家避坑:
- 提示 _path 错误,以为是 环境变量 path 的问题。
配置/设置环境变量、重新安装 Python 并选择加入环境变量、配置环境变量最长字符数等,没解决问题。 - 以为是 Python 虚拟环境 的问题。
重新配置虚拟环境,或者不使用虚拟环境,各种折腾,没解决问题。 - 以为是 安装包不完整 的问题。
这是网上给出的较多的原因。
尝试 uninstall / install Numpy/Matplotlib,多次重装折腾,没解决问题。
上加州大学下载 whl 安装包本地安装,没解决问题。(注意:到这里快了) - 以为是 墙内不如墙外香 的问题。
担心 pip 默认地址在墙外,可能丢部分内容。
使用参数 -i 指向清华大学,没解决问题。 - 也许 Anaconda 可以解决。
一定可以的,要不然 Anaconda 是干嘛的。
但本次测试就是想搭一个不用 conda 的纯环境。
以上用到的一些命令、参数等,将放到文末其他资源部分,供大家参考。
1.3 复现问题的最小环境
为了排除干扰,假设了一个可能的最小环境:
新安装的 Windows,新下载安装 Python,用 pip install matplotlib 安装 Matplotlib,在命令行中测试,结果如下:
2. 解决方案
2.1 根本原因
经过上述各种测试,以及查阅各种资料,最终觉得,原因是:
Python 版本与 Matplotlib 版本不一致所致。
不要觉得安装了最新的Python,最新的 Matplotlib 及其自动装的 Numpy 就没有问题。
由此也知道了 Anaconda 的价值。当然本文犟在就不用 Anaconda ,想找找根本原因。
也就是说,您的Windows 版本 32bit/64bit、Python 版本、Numpy 版本、Matplotlib 版本,一定要一致。
2.2 解决过程
1. 上 Python.org 官网,下载特定的版本。我干脆下了 Python 3.11.1,3.11.0,3.10.0 的32位和64位备用。如图:
2. 上加州大学网站,下载特定版本的 Numpy 和 Matplotlib 的whl 文件。注意版本。如图:
图中只显示了 Matplotlib,请滚去 Numpy 做同样动作。
3. 在命令行中,安装相应的东东。如下:
1) 双击 “ python-3.10.0-amd64.exe ”,安装 Python 3.10.0 的 64位版本。当然你可以安装别的版本,但一定要和下面步骤的版本一致。
2) 使用 “ pip install E:\MatplotlibPacks\numpy-1.22.4+mkl-cp310-cp310-win_amd64.whl ”, 本地安装下载好的相应版本的 Numpy。
注意 cp310 对应前面的Python3.10.0,amd64对应Python的64位。问题就在这里。
3) 使用 “ pip install E:\MatplotlibPacks\matplotlib-3.5.2-cp310-cp310-win_amd64.whl ”, 本地安装下载好的相应版本的 Matplotlib。注意版本。
界面如下:
4. 测试结果。命令行中,进入 Python,键入 import matplotlib,不再报错。如图:
5. 玩一把 Matplotlib,键入如下代码,微笑起来:
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(-10,10,0.1)
y1 = x ** 2
y2 = (x/2)**2 + 75
plt.plot(x,y1)
plt.plot(x,y2)
plt.show()
结果如下:
2.3 结论
当出现 matplotlib._path 错误,或 matplotlib 的其他库/路径错误时,请记得检查并确保 Python、Numpy、Matplotlib 的版本必须一致。
3. 其他资源
本文用到/起作用或没起作用 的资源整理如下,供大家参考:
一些网站:
- python官网 :https://www.python.org/
- VS Studio 官网:https://code.visualstudio.com/
- Matplotlib官网:https://matplotlib.org/
- 加州大学Python扩展包网站:https://www.lfd.uci.edu/~gohlke/pythonlibs/
- 清华大学 pip 镜像站:https://pypi.tuna.tsinghua.edu.cn/simple/
-
中国科学技术大学 : https://mirrors.bfsu.edu.cn/pypi/web/simple/
一些命令:
- pip 指定特定镜像源:
pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple - pip 安装本地文件:
pip install ~path\*.whl - pip 安装指定版本:
pip install matplotlib==3.5.1
一些书:
学习 Python、Jupyter、Matplotlib 等知识,请参考笔者撰写 人民邮电出版社出版的《Jupyter入门与实战》。
学习 Visual Studio Code,请关注笔者后续资料。