零、前言
在anaconda创建的虚拟环境中,conda install和pip都能安装packet,有什么区别吗?
我的问题的范围在于“anaconda创建的虚拟环境中”,所以下面这种区别就不考虑了:
两年前就有了这个疑惑,不过只是在瞎用,哪个能下好用哪个。但是依据官方的说法,有时候瞎用也是有道理的,因为要下载的包不一定哪个里有。最好是先用conda install,不行的话换pip
看到“远程仓库”这个概念突然发现,anaconda和maven好像差不多。
一、区别
看一下官网给出的区别:
Anaconda | Understanding Conda and Pip
总结一下:
1. 远程仓库不同(源不同)。pip的仓库里有150,000多个包,conda只有1500多个。当然,我们用的时候肯定不用这个默认的远程仓库,都替换成国内的阿里源、清华源了。
2.可装包范围不同
pip是一个纯粹的管理和安装python库的工具;而conda不仅仅可以安装python库,一些依赖的c/c++库或者其他语言库,也是可以一并安装的。
3.依赖处理的逻辑不同
虽然两者都会校验依赖,但是校验的逻辑和方法是不同的。pip是按顺序一个一个检查,如果安装第一个库时,引入了第二个库不兼容的库,那么安装第二个库的时候,就会存在问题;而conda是在执行命令时,对所需安装的库做统一的兼容检查,以安装最合适的版本。
4.还有一点我不太明白的是,在虚拟环境中使用pip命令,用的是全局的pip,并没有用这个环境中的pip。
5. 其他的区别不太重要了
二、conda和pip换源的方法
2.1 conda
方法(一):更改一下 `.condarc`这个配置文件(文件在用户目录下,我的在C:\Users\DELL\.condarc),永久性配置镜像源(清华源)。更改后内容如下:
channels:
- defaults
show_channel_urls: true
channel_alias: https://mirrors.tuna.tsinghua.edu.cn/anaconda
default_channels:
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/pro
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
custom_channels:
conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
ssl_verify: true
更改完成后,在命令行输入以下命令完成配置的更新:
conda config --set show_channel_urls yes
方法(二):在命令行进行永久性配置镜像源,其实就是将上面的源用下面的命令一条条手动add进去(这里以阿里源为例)
conda config --add channels https://mirrors.aliyun.com/anaconda/pkgs/free
conda config --add channels https://mirrors.aliyun.com/anaconda/pkgs/main
conda config --add channels https://mirrors.aliyun.com/anaconda/pkgs/msys2
conda config --add channels https://mirrors.aliyun.com/anaconda/pkgs/r
conda config --set show_channel_urls yes
退出虚拟环境再进入,然后用
conda config --get channels
命令查看,之前通过配置文件加入的源还在。
并且发现配置文件自动发生改动了:
。。。
。。。
。。。
。。。
方法(三)暂时换源。
conda install --channel https://地址 opencv3
2.2 pip
注意,如果使用的是Python2版本,如果虚拟环境中没有先安装pip,就执行pip命令的话,会把包安装在默认路径中:
如何用pip指令将python包安装到虚拟环境中_pip安装到虚拟环境_无水先生的博客-CSDN博客
所以在Python2我们一旦创建好一个虚拟环境后,就要执行conda install pip命令先下载一个pip,用虚拟环境中的pip安装的包才会放在虚拟环境中!
但是如果是Python3的话,自带pip,就不要再conda install pip安装!不然会冲突,导致pip命令不管安装什么包都会报这个错误:
ERROR: Could not find a version that satisfies the requirement xxx (from versions: none)
ERROR: No matching distribution found for xxx
方法(一):通过更改配置文件pip.ini,永久性换源。
方法(二):屡试不爽的暂时换源!!!!!!!!!!!
pip install -i https://mirrors.aliyun.com/pypi/simple 包名
假如你要安装的包叫matplotlib,那么输入的完整命令应该是
pip install -i https://mirrors.aliyun.com/pypi/simple matplotlib
我觉得阿里云的镜像比较好用,基本上不太刁钻的包都能马上安装好,所以给的这条命令里用的是阿里云的镜像。如果阿里云这个channel不行的话可以换清华源镜像试一下。