说一下我的操作环境:我使用的是 MacBook,系统自带 python2.7 ,我又安装了 python3.6.1.
先说一下我的现象:
我在终端使用指令pip install matplotlib
在终端里显示安装 matplotlib 成功之后,使用import matplotlib
指令调用该模块。
结果提示我没有找到该模块:
ModuleNotFoundError: No module named 'matplotlib'
然而,我在终端使用指令pip list
,结果显示很明显是安装成功了的:
cycler (0.10.0)
functools32 (3.2.3.post2)
matplotlib (2.0.2) // ← matplotlib 明明已经安装成功
mercurial (4.2)
numpy (1.12.1)
pip (9.0.1)
pyparsing (2.2.0)
python-dateutil (2.6.0)
pytz (2017.2)
setuptools (32.1.0)
six (1.10.0)
subprocess32 (3.2.7)
wheel (0.29.0)
然后,我发现,在终端里使用
python
>>>import matplotlib
是成功的,然而,使用下面的
python3
>>>import matplotlib
就失败了。
所以我们已经可以定位问题了:
matplotlib 安装成功了,只是,是针对 python2 的环境安装成功了。
但是对于 python3 的环境,安装是失败的。
我在 google 上查找了 N 多资料都没有一个很好的解决办法,尝试了很多方法,都失败了。
网上很多解决方案说 python3 的 matplotlib 需要下载源代码,自行编译安装,把安装时候的 python 命令改成 python3 。
这样的操作太复杂,如果你遇到了跟我一样的情况,先别尝试这种非常复杂的方法,继续往下看,我的方法可能会帮到你。
那这究竟是为什么呢?
在终端使用指令:pip uninstall matplotlib
就可以发现原因了,卸载 matplotlib 的过程中可以发现: matplotlib 的安装路径是在 python2.7 下面的,而我们最终使用 import 语句的时候,用的是 python3.6 !
而 python3.6 是有单独的 pip 的,python3 下是pip3
!
使用pip3 list
可以看到,在 python3 下是没有安装 matplotlib 的。
因此,使用以下语句再安装一次 matplotlib 就可以了:
pip3 install matplotlib
安装成功之后,使用pip3 list
语句查看:
cycler (0.10.0)
matplotlib (2.0.2) // ← python3下的matplotlib已经安装成功
numpy (1.12.1)
pip (9.0.1)
pygame (1.9.4.dev0)
pyparsing (2.2.0)
python-dateutil (2.6.0)
pytz (2017.2)
setuptools (28.8.0)
six (1.10.0)
此时再使用import matplotlib
,可见已经调用成功了。