操作系统:win10 python:我在D盘的python文件夹下安装了一个python,并加入到了环境变量中。 anaconda:我的anaconda安装在D盘的programData中
场景:我在虚拟环境中安装完tensorflow之后,在cmd中键入python,然后在python中引入tensorflow import tensorflow,可是运行的时候提示bug:ModuleNotFoundError: No module named 'tensorflow'
也就是说python找不到tensorflow模块,开始的时候,我在网上找各种处理方案,还搭梯子,最后都是让我 要不是重新安装,要不是更新安装工具,但是最后的结局是没有解决。
前面也写过一个程序,用这种方式,能引入其他的包了,但是到了这里就不行了呢?是不是tensorflow的问题呢?我想尽了办法。 那最后是怎么解决的呢?我想到python创建虚拟环境后,都是要用虚拟环境中的一切内容,包括python,只有使用虚拟环境中的python,才能使用该环境中的tensorflow包,我就想是不是我使用的python不是虚拟环境中的python,可是当前我已经激活了虚拟环境,已经进入了虚拟环境,难道用的不是虚拟环境中的python吗? 随后我在cmd中执行where python 命令,出现的结果如下:
果然,第一个不是蓄奴环境中的python,是annconda安装包中默认的自带的python,那为什么会出现这种情况呢?我看到我cmd当前所在的目录就是anaconda的安装目录。
是不是这个原因:系统中有多个python,包括自己安装的,anaconda自带的,还有虚拟环境中的,当我们使用命令的时候,会第一时间用本目录下的命令,本目录没有的会再去使用当前激活环境中的,没有激活环境的就去找系统环境变量中的。
为了验证,我做了如下测试:将当前目录改为上一级,也就是让当前目录没有了python执行命令了,再执行 where python命令:结果如下:
果然第一条命令变成了我当前激活环境中的,这次我再试一下引入包:结果如下:
事实证明这次对了,也就是我的bug是由于系统使用的pyton命令不对,不是虚拟环境中的命令。
补充一下:如果当前目录没有python命令,也没有激活任何环境,那命令用的是什么呢?我们先退出虚拟环境 再执行where python看结果:
果然去执行系统环境变量中的python了,这两个python都配置。
总结:关于anaconda的 1、win在cmd执行命令的时候,默认会执行当前目录的命令 2、当前目录没有的话会去执行当前激活环境中的命令 3、当前没有激活环境,或者激活环境中没有命令的时候就去执行系统环境便令中的命令 4、如果环境变量中再没有的话就报错了找不到命令了