1、什么是anaconda、conda和pip
-
前言
在我们使用Python进行数据分析以及编程的时候,我们需要使用很多的包,并且在不同的项目,我们可能要用到不同版本的包,这就出现了以下的问题:第一,如果我们每个包都去下载,且不说耗时耗力,难道真的能够记住所有要用的包?
第二,我们一个项目可能要用很多的包,并且时常需要更新或者降级,我们难道要自己去一个个的更新吗?
第三,不同的项目需要不同的环境,难道我们每更换一个项目就重新配一次环境吗?
-
anaconda解决以上问题
包的集合:anaconda自身包含了Python、conda等很多科学包及其依赖项,我们常用的包它基本都包含,解决了手动装包的问题。
包管理器:anaconda是从conda基础上发展而来,conda是一个包管理器,通过anaconda使用conda工具可以让我们轻松地安装、更新、卸载这些依赖包。
虚环境管理器:anaconda提供虚环境,可以为每个项目量身定制需要的环境,在开发不同项目时,只需轻松切换。
综上所述,anaconda是Python的发行版,意思就是:anaconda是包含了第三方依赖的Python发行版,并且使用了conda作为包管理器,并且可以支持虚拟环境的搭建。
-
两个包管理器:pip和conda
比较项 | pip | conda |
---|---|---|
作用范围 | Python | 多种语言包管理工具,如C,C++ |
初始状态 | 使用pip前必须先安装Python解释器 | 可以直接安装Python包和Python解释器 |
虚环境支持 | 必须依赖virtualenv或venv等其他工具,没有内置的环境支持 | 可以支持安装不同版本的Python包或其他软件包的隔离安装环境 |
安全性 | pip在串行安装包的时候,安装后面的包不会考虑前面包的依赖性,不能同时保证所有包的依赖性,若存在不兼容,可能会破坏环境 | 在安装包的时候能够保证所有的包都能够兼容 |
广度 | pip能够安装PyPI上提供的150,000多个软件包 | conda可以安装一百来个包,有的包是安装不了的 |
如果我们专注于只是安装Python包,conda和pip服务不同的受众和不同的目的。 如果你想在现有的系统Python安装中管理Python包,conda不能帮助你:通过设计,它只能在conda环境中安装包。 如果你想说,使用依赖于外部依赖的许多Python包(NumPy,SciPy和Matplotlib是常见的例子),同时以一种有意义的方式跟踪这些依赖,pip不能帮助你:它管理Python包且只有Python包。(引自:http://blog.sina.com.cn/s/blog_8a122dcf0102x9vn.html)
Conda和pip不是竞争对手,而是侧重于不同用户组和使用模式的工具。
我们通常会看到同时使用conda和pip,是因为有些包只能通过pip安装,但是conda是更加安全的,通常我们推荐尽量用conda,装不了的包再用pip。
2、anaconda创建虚拟环境
-
conda常用命令
conda list —— —— 查看安装了哪些包 conda env list —— —— 查看当前有哪些虚拟环境 conda update conda —— —— 更新当前conda python --version —— —— 查看当前环境的Python版本
-
虚拟环境操作
-
第一步,创建虚拟环境
创建名为your_env_name,python版本为X.X的虚拟环境:conda create -n your_env_name python=X.X
your_env_name文件可以在Anaconda安装目录envs文件下找到。以上命令,等号两边不要加空格,会报错。
-
第二步,环境切换
当我们不开启虚拟环境的时候,我们都是默认使用PATH环境中的默认python版本。所以对虚拟环境的开启和关闭也就等同于开发环境的切换。激活名为your_env_name的虚拟环境:
source activate your_env_name
关闭当前的虚拟环境:
source deactivate
在使用这条命的时候遇到了一个报错:
source: no such file or directory: deactivate。
解决方法是使用命令:conda deactivate
但是这里要注意,conda的版本必须在4.6以上,如果版本太低,需要更新conda。然后我又尝试了这条命令:
conda activate your_env_name
成功做到了将环境切换到your_env_name,所以现在我们有两种方法进行环境切换了。
要说明的是,在我出现以上报错的时候,激活命令 source activate your_env_name 仍然是可以正常使用的,只是关闭命令无法正常使用。
-
第三步,安装与删除其他的包
首先,切换到创建的虚拟环境,剩下的命令其实就是conda的正常命令:
安装package的version number版本到当前虚拟环境中:conda install package=version number
以上命令,等号两边不要加空格,会报错。
删除环境当前虚拟环境中的package_name包:
conda remove package_name
-
删除虚拟环境
删除名为your_env_name的环境:conda remove -n your_env_name --all
注意,在执行这条命令的时候,必须在其他的环境中,也就是说如果要删除环境your_env_name,我们必须先关闭这个环境,我们不能删除一个正在使用的环境。如在删除your_env_name这个环境的时候,先切入到base环境,然后执行命令,可以顺利删除。
-
以上每条指令都亲自运行过,可放心使用。
3、pip创建虚拟环境
这篇文章讲的挺好,不过我没动手试过。