运行代码时遇到: no module named matplotlib

首先检查pip list

opencv matplot opencvmatplotlib引用不了_机器学习


pip里面存在 matplotlib 若没有就下载 pip install matplotlib

opencv matplot opencvmatplotlib引用不了_python_02


其次进入Anaconda Prompt 环境检查了conda list

opencv matplot opencvmatplotlib引用不了_机器学习_03


也存在matplotlib 同样 若没有就下载 conda install matplotlib

opencv matplot opencvmatplotlib引用不了_tensorflow_04


pip conda 两者都存在matplotlib ,为啥还报错????

然后就一直搜解决办法,直到看到一句话:
虽然conda里和pip里都已安装了matplotlib,但很有可能TensorFlow里没有安装,
一语惊醒。。。

然后打开Anaconda Prompt

activate tensorflow

进入TensorFlow环境,检查了下conda list 的确没有

opencv matplot opencvmatplotlib引用不了_机器学习_05

然后就在当前tensorflow环境下准备下载,

conda install matplotlib

然后出现一堆看不懂的吊错误,以为是镜像问题,换了镜像也不行

opencv matplot opencvmatplotlib引用不了_opencv matplot_06

最后,

仍在此环境下 通过pip install matplotlib 下载好了

opencv matplot opencvmatplotlib引用不了_机器学习_07

重新跑代码,完美运行!md 太™爽了

总结反思:

不明白conda pip tensorflow三者的关系,以为前两者里面存在的库,调用TensorFlow时就可以用,其实不然。

总结三者关系:

Anaconda
Anaconda是一个用于科学计算的Python发行版,支持 Linux, Mac, Windows系统,提供了包管理与环境管理的功能,可以很方便地解决多版本python并存、切换以及各种第三方包安装问题。Anaconda利用工具/命令conda来进行package和environment的管理,并且已经包含了Python和相关的配套工具。

Conda
Conda是一个包管理器;Conda是跨平台的包和环境管理器,可以安装和管理来自Anaconda repository以 Anaconda Cloud的conda包。 Conda包是二进制文件,徐需要使用编译器来安装它们。另外,conda包不仅限于Python软件。它们还可能包含C或C ++库,R包或任何其他软件。
conda anaconda区别
这里先解释下conda、anaconda这些概念的差别。conda可以理解为一个工具,也是一个可执行命令,其核心功能是包管理与环境管理。包管理与pip的使用类似,环境管理则允许用户方便地安装不同版本的python并可以快速切换。Anaconda则是一个打包的集合,里面预装好了conda、某个版本的python、众多packages、科学计算工具等等,所以也称为Python的一种发行版。

包管理器是自动化软件安装,更新,卸载的一种工具。Conda,有命令”conda install”, “conda update”, “conda remove”, 所以很明显, conda是包管理器。

conda和Anaconda名字相似,但没有必然关系, 你可以不安装Anaconda的同时, 使用conda安装和管理软件。

Conda是一个通用的包管理器,当初设计来管理任何语言的包。所以用来管理python包当然也是绰绰有余。

Pip
Pip是Python Packaging Authority推荐的用于从Python Package Index安装包的工具(独有的,有局限性和专享性)。 Pip安装打包为wheels或源代码分发的Python软件。后者可能要求系统安装兼容的编译器和库。

pip可以允许你在任何环境中安装python包,而conda允许你在conda环境中安装任何语言包(包括c语言或者python)。

补充:

“打个不恰当的比喻,python是一条章鱼,tensorflow就是其中的一种触手。但是章鱼不止tensorflow这一条触手,还有类似于numpy,pandas等等很多条触手。每条触手可以实现一类功能,章鱼要完成一个具体的任务,比如吃饭(假设像人一样吃饭),就需要专门拿馒头的触手去拿馒头,专门拿筷子的触手去拿筷子夹菜,这样通过多条手的配合,共同实现一个具体的任务。”

点睛之笔:
Python是章鱼头,Tensorflow、numpy、pandas是一条条章鱼足,里面的一个个功能是章鱼足上的一个个吸盘;

为什么要安装Anaconda而不是直接从cmd调用Python

我们为什么要安装Anaconda,我直接在电脑里面下载Python然后再安装各个包来使用,不好吗?
想象我们现在有一个房子,里面有书房、卧室、卫生间、客厅、厨房,不同的房间满足我们吃、喝、拉、撒、睡的不同需求,如果把python\tensorflow直接在电脑安装就相当于我把房间的墙都打掉,吃喝拉撒睡都在一个空间里,是这个意思不?可以吗?可以,但没必要。你上厕所时需要菜刀案板吗,你做饭时需要马桶吗?
所以,我们需要Anaconda帮我们把房间打好隔断,然后我们再在书房装上TensorFlow来进行我们的任务。
Anaconda提供了我们环境管理的功能,如建立吃饭的环境、建立学习的环境、建立睡觉的环境等。