1.众所周知,pip的确是python官方(PyPA)推荐的Python软件包安装管理工具,在安装Python软件包时,第一反应应该是pip。正是由于pip是Python官方推荐的"正统"工具,所以pip只专注于Python软件包之间的依赖,不考虑Python软件包与非Python软件包之间的依赖关系。
而Tensorflow不仅依赖于Python软件包,还依赖于非Python软件包,如cudatoolkit、cudnn、interl-openmp、intel-MKL及protoc等。
conda在安装Tensorflow时,会同时解决TensorFlow所依赖的Python软件包和非Python软件包的问题,让安装变得简单。
此处需要留意conda对于多个环境的包是统一进行管理的,不管在什么环境下载的包,都会额外在一个目录(Anaconda3\pkgs\fasttext)里面备份一份,因此如果使用conda install安装一个别的环境已经装过的包时,不用重新下载,直接copy一份到该环境即可。
但是如果使用pip因为每个环境安装使用的pip在不同的路径下,故会重复安装。
2.conda list下的和pip list下的同样的包,导入的是pip list下的。(这里在csdn上也有别的说法,但我个人下载numpy的时候会优先读pip下的2.0,不读conda的1.26,很怪)
令一种说法:
-
conda安装 不会查到pip安装的包(先pip后conda会正常安装并调用conda,即conda不认pip下过的,这里就可能会导致一些奇怪的冲突),pip安装 可以查到conda的包(先conda再pip会显示已安装)。
-
尽量避免混用,如果必须要混用,先用conda再用pip.
Conda list除了虚拟环境下的还有关联文件下的
Pip list只有当前虚拟环境下的
4.若混用,uninstall后可能会出一些奇怪的问题。先把warning里提到的几个文件删掉(一般问题文件系统会加上~前缀,注意要把其中带-infor后缀的文件也删了(warning里不会出现这个文件,但是会有~前缀,list指令读的是这个文件,不删install会有问题)),再看看anaconda文件里lib和env\lpytorch\lib里还有没有想要删除的包的文件,手动全删,再install就行