Python环境管理——Anconda
下载安装
1、推荐使用清华的镜像
2、注意:
安装目录最好不要有空格;安装选项是否把Anaconda加入环境变量的选项上打勾,推荐打勾,如果不打勾可以再安装以后将对应的环境变量添加上去
3、验证:
安装好了以后,可以在cmd中输入Python,发现显示的还是你之前安装的版本,像我的就是Python3.6,这是因为你之前安装Python3,6的时候,是将它的安装目录添加到了环境变量中的。在系统环境变量中找到对应之前安装Python的路径并删除。若安装时勾选了卸载旧版本则会显示conda自带的对应版本的python。
输入conda --version 会有对应版本号及安装完成。
Conda的环境管理
Conda的环境管理功能允许我们同时安装若干不同版本的Python,并能自由切换。
对于上述安装过程,假设我们采用的是Python 3.7对应的conda安装包(指的是Anconda在安装时会自动给我们安装的那个python版本),那么Python3.7就是默认的环境(默认虚拟环境名字是root,注意这个root不是超级管理员的意思)。
假设我们需要安装Python 3.8,此时,我们需要做的操作如下:
conda info --envs
# 创建 Python38 的虚拟环境
conda create --name python38 python=3.8 # python27 为虚拟环境名称
activate python38 # 进入虚拟环境
# 激活后,会发现terminal输入的地方多了python38的字样,实际上,此时系统做的事情就是把默认3.7环境从PATH中去除,再把3.8对应的命令加入PATH
# 此时,再次输入 python --version 可以得到`Python 3.8.5 :: Anaconda 4.1.1 (64-bit)`,即系统已经切换到了3.8的环境
# 如果想返回默认的python 3.7环境,运行
deactivate python38 # 退出虚拟环境
# 删除一个已有的环境
conda remove --name python38 --all
# 另外:用户安装的不同python环境都会被放在目录~/anaconda/envs下,可以在命令中运行
conda info -e
#查看已安装的环境,当前被激活的环境会显示有一个星号或者括号。
#其他环境管理命令
conda config ? # 查看可以使用的命令
conda config --show # 查看 channels 等信息
conda remove -n env_name --all # 删除虚拟环境
Conda的包管理
Conda的包管理就比较好理解了,这部分功能与pip类似。
# 安装scipy
conda install scipy
# conda会从从远程搜索scipy的相关信息和依赖项目,相对于当前环境匹配版本的包,conda会同时安装numpy和mkl(运算加速的库)等此包依赖的包。
#其他
conda list # 查看已经安装的包
conda list -n python38 # 查看指定环境已安装的包
conda search numpy # 查看 package 信息
conda update -n python34 numpy # 更新package
conda remove -n python34 numpy # 删除package
# 安装package conda install -n python34 numpy
# 如果不用-n指定环境名称,则被安装在当前活跃环境
# 也可以通过-c指定通过某个channel安装
#最新版的conda是从site-packages文件夹中搜索已经安装的包,不依赖于pip,因此可以显示出通过各种方式安装的包
前面已经提到,conda将conda、python等都视为package,因此,完全可以使用conda来管理conda和python的版本,例如
# 更新conda,保持conda最新
conda update conda
# 更新anaconda
conda update anaconda
# 更新python
conda update python
# 假设当前环境是python 3.4, conda会将python升级为3.4.x系列的当前最新版本
补充:conda创建新的python环境仅安装python相关的必须项,如python, pip等,如果希望该环境像默认环境那样,安装anaconda集合包(即把默认版本当做母本)需要:
# 在当前环境下安装anaconda包集合
conda install anaconda
# 结合创建环境的命令,以上操作可以合并为
conda create -n python34 python=3.4 anaconda
设置国内镜像
# 给 conda 添加镜像地址
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn或https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
# 设置搜索时显示通道地址
conda config --set show_channel_urls yes
conda config --remove channels defaults
执行完上述命令后,会生成 ~/.condarc(Linux/Mac)或 C:UsersUSER_NAME.condarc文件,记录着我们对conda的配置,直接手动创建、编辑该文件是相同的效果。
pycharm关联anaconda所创建虚拟环境的python解释器
如下图所示,如果我们选择new environment using,便会创建一个新的虚拟环境,这里,我们选择previously configured interpreter(目前配置的解释器)
这时,我们在终端pip install 和conda Install安装包都会安装在anaconda所创建的环境中。(当然我们可以根据自身需求使用conda创建多个python环境,pycharm新建新的项目重新添加想要的某个环境的python解释器便可)
conda安装原理
1.先下载:下载到xxxxxx\anaconda\pkgs
2.再安装,安装到环境文件夹中xxxxxxx\anaconda\envs
所以我们在使用conda uninstall 安装包时,只会卸载当前环境的包,并不会影响其它环境,同时如果卸载后重新安装包时,便会从pkgs文件夹中获取压缩文件,无需重新下载(比如像pytorch大的安装包时重新下载便会浪费太多时间[建议conda install 某些大的安装包时,使用某些vpn选择国外节点下载会快一点])
pip与conda安装对比
1.pip安装不会安装所有的依赖项只会安装部分依赖项,而conda会安装全部;
2.pip与conda不会重复安装已经安装的依赖。
3.pip不会告诉你都安装了什么,conda会
4.pip安装的内容不会显示在anaconda navigation的环境中,conda会。
5.conda下载安装包位置xxxxx\anaconda\pkgs
6.conda list后面如果显示为说明是pip安装,不会显示在环境之中
pip的确是python官方推荐的Python软件包安装管理工具,在安装Python软件包时,第一反应应该是pip。正是由于pip是Python官方推荐的“正统”工具,所以pip只专注于Python软件包之间的依赖,不考虑Python软件包与非Python软件包之间的依赖关系。
而Tensorflow和Pytorch等不仅依赖于Python软件包,还依赖于非Python软件包,如cudatoolkit、cudnn、cuda、interl-openmp、intel-MKL及protoc等。
conda在安装Tensorflow时,会同时解决TensorFlow所依赖的Python软件包和非Python软件包的问题,让安装变得简单。
参考
[1]: https://zhuanlan.zhihu.com/p/25198543
[2]: accumulate_zhang
[3]: https://www.cnblogs.com/midworld/p/13423043.html
[4]: http://adrai.github.io/flowchart.js/