Python学习的路上,Anaconda送你一双遮天神翼
一、背景
最近在学习python,发现在本地搭建python环境的时候,要是想要同时搭建不同python版本的环境,就比较麻烦,很容易就出现冲突了,很是头疼。然后光明就出现这山重水复疑无路的时候,同事给我推荐了包管理以及环境管理神器:Anaconda。
说明:建议你在自己的电脑上将下面的步骤亲自跟着敲一遍。虽然你不一定能一次性把这些命令全部记住,但是不用担心,我们没必要把所有的命令都一次性全部记住,随着我们使用它们的频率越来越高,就会渐渐的都记在脑海里了。实在记不住的,要用的时候再来这里查也是可以的。现在我们最重要要做到的就是跟着下面步骤操作并理解了每一步是干啥的。
二、Anaconda是什么?
Anaconda在英文中是“蟒蛇”,麻辣鸡(Nicki Minaj妮琪·米娜)有首歌就叫《Anaconda》,表示像蟒蛇一样性感妖娆的身体。

所有你看下面Anaconda的图标就像一个收尾互相咬住的“蟒蛇”。

三、为什么需要Anaconda?
我已在本地安装了 Python,那我为啥还需要 Anaconda?有如下三个原因
Anaconda 中集成了很多常用数据开发包,它附带了 Python、conda以及 150 多个其他包及其依赖项。
管理包
Anaconda 是在 conda(一个包管理器和环境管理器)上发展出来的。
在数据分析中,我们会用到很多第三方包,而conda可以很好的帮助我们在计算机上管理这些包,包括安装、更新和卸载包。
管理环境
比如你在一个项目中用了 Python 2,而另一个项目中使用Python 3,如果直接同时安装两个版本的Python可能会造成许多错误和混乱。这时 conda就可以帮助我们为不同的项目建立不一样的运行环境。
还有很多项目使用的包版本不同,例如我们不可能同时安装两个 Numpy 版本,而conda可以帮我们为每个 Numpy 版本创建一个环境,然后不同版本的项目在对应环境中工作。
四、如何安装Anaconda?
Anaconda 可用于多个平台( Mac OS X 、Windows和 Linux)。我们可以在它的官网找到安装程序以及安装说明。根据操作系统的位数(是32位还是64位)选择对应的版本下载。(Anaconda已不再支持Windows XP).
官网地址:https://www.anaconda.com/download/
如果官网地址网速太慢无法下载,可以在我公众号:[阿豪聊干货],中回复“anaconda”从网盘下载。
Anaconda 的下载文件比较大(约 500 MB),因为它附带了 Python 中最常用的数据科学包。
如果计算机上已经安装了 Python,安装不会对你有任何影响。实际上,脚本和程序使用的默认 Python 是 Anaconda 附带的 Python。
注意:如果你是windows 10系统,注意在安装Anaconda软件的时候,右击安装软件→选择以管理员的身份运行。

安装完成后,在windows上按下图打开 Anaconda Prompt ( Mac 下的终端就集成了Anaconda Prompt),后文我们会将Anaconda Prompt统一称为“终端”。

注意:如果你是windows 10系统,按下图操作

若你是win10系统,并且没有按上图打开,在控制台中会报如下错误信息:

若安装后在Anaconda Prompt中无法使用Conda命令,解决方法传送门: https://zhuanlan.zhihu.com/p/34337889
如果Anaconda Prompt中可以使用conda命令,接着下面继续操作:
首先配置下载包使用清华仓库镜像,这样更新会快一些:
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --set show_channel_urls yes
为了避免后面使用报错,你需要先更新下所有包。在终端输入更新所有包的命令:
conda upgrade --all
并在提示是否更新的时候输入 y(Yes)让更新继续。初次安装下的软件包版本一般都比较老旧,因此提前更新可以避免未来不必要的问题。
如果以上命令运行后报错,参考这里的解决办法:https://zhuanlan.zhihu.com/p/34337889
五、如何管理包
安装包
在终端中键入:
conda install package_name
例如,要安装 pandas,在终端中输入:
conda install pandas
你还可以同时安装多个包。类似 conda install pandas numpy 的命令会同时安装所有这些包。conda 还会自动为你安装依赖项。例如,scipy 依赖于 numpy,因为它使用并需要 numpy。如果你只安装 scipy (conda install scipy),则 conda 还会安装 numpy(如果尚未安装的话)。
卸载包
在终端中键入 :
conda remove package_name
上面命令中的package_name是指你要卸载包的名称,例如你想卸载pandas包:
conda remove pandas
更新包
在终端中输入:
conda update package_name
如果想更新环境中的所有包(这样做常常很有用),使用:
conda update --all
列出已安装的包
在终端中键入:
conda list
查找包
如果我们不知道要找的包的全名称,我么可以尝试使用 conda search search_term 进行搜索。比如,我想安装numpy,但我不知道确切的包名称。我们可以这样尝试:
conda search num
六、如何管理环境
conda 可以为我们不同的项目建立不同的运行环境,首先我们安装nb_conda用于notebook自动关联nb_conda的环境:
conda install nb_conda
并在提示是否更新的时候输入 y(Yes)让安装继续。
创建环境
在终端中使用:
conda create -n envName package_name
命令中,envName 是我们设置环境的名称(-n 是说该选项后的envName是我们要创建环境的名称),package_name 是我们要安装到将要创建的环境中的包名称。
例如,要创建环境名称为 py3 的环境并在其中安装 python 3.5,在终端中输入 :
conda create -n py3 python=3.5
创建环境时,可以指定要安装在环境中的 Python 版本
当我们同时使用 Python 2.x 和 Python 3.x 中的代码时这很有用。这就要创建具有特定版本 Python 的环境,比如创建环境名称为py3,并安装最新版本的Python3命令:
conda create -n py3 python=3
当然我们也可以这样创建环境名称为py2,并在该环境中安装最新版本的Python2:
conda create -n py2 python=2
因为我们的项目要求不同,有时会用Python2,还有时会用Python3。所以我们需要在自己计算机上创建这两个环境,并分别取类似这样的环境名称:py2,py3。这样我们就可以根据不同的项目轻松切换不同版本的python。
如果我们要安装特定版本(例如 Python 3.5),请使用:
conda create -n py python=3.5
进入环境
在 OSX/Linux 上我们使用 source activate my_env_name 进入环境。在 Windows 上我们使用 activate my_env_name进入环境。
进入环境后,我们会在终端提示符中看到当前环境名称,下图说明我们进入py3的环境(这里的py3是我们上面创建环境时自己起的名称,你可以随意起自己喜欢的
名称)。

进入环境后,我们用conda list 来查看环境中默认安装的几个包:

在环境中安装包的命令与前面一样:
conda install package_name
不过,这次你安装的特定包仅在你进入环境后才可用。
退出环境
在 OSX/Linux 上 输入:
source deactivate
在 Windows 上,终端中输入:
deactivate
共享环境
共享环境是工作中非常有用,它能让其他开发人员一键安装所有你在代码中使用的包,并且还能确保这些包的版本正确和你使用的一致。例如你开发了一个电商平台数据分析系统,你要把项目提交给负责项目部署的王五让他来给你部署项目,但是这货并不知道你开发时都使用了哪些依赖包及python版本,这可如何是好?
这时候你就可以在当前的环境的终端中执行 conda env export -f environment.yml 或者conda env export > environment.yml命令将当前的环境以及依赖包等描述保存到指定的YAML文件(包括Pyhton版本以及所有依赖包的名称和版本)。
命令中的前半部分部分 conda env export 用于输出环境中的所有包的名称和版本信息(包括 Python 版本)。这样在我们指定的路径下可以看到导出的环境文件
:

我们在 GitHub 等开源仓库上共享代码时,最好以这样的方式同时创建环境文件并将其上传到代码库中。这可以让别人很轻松地安装你的代码及其所有依赖项。
导出的环境文件,在其他电脑环境中如何使用呢?
首先在conda中进入你的环境,比如activate py3,然后在使用以下命令更新你的环境:
# 其中-f表示你要导出文件在本地的路径,所以/path/to/environment.yml要换成你本地的实际路径
conda env update -f /path/to/environment.yml
对于那些兵不使用 conda 的用户,我通常还可以使用 pip freeze > environment.txt 导出一个txt文件并将其上传到代码库中。
具体操作传送门:https://pip.pypa.io/en/stable/reference/pip_freeze/
举个例子我们可能更容易理解这个使用场景:
首先,我们在自己电脑上的conda中将自己项目的环境及依赖导出成environment.txt文件:
然后我们将该文件上传到项目的代码库中,项目其他开发人员在他的电脑上即使没有安装conda也能使用这个文件来安装和我们一样的开发环境,他只需要在自己的电脑上进入python命令环境,而后运行如下命令就可以安装该项目所依赖的包:
pip install -r /path/requirements.txt
其中/path/requirements.txt是该文件在你电脑上的实际路径。
列出环境
当我们创建的环境越来越多,我们有时候会忘记自己创建的环境名称,这时我们用 conda env list 命令就可以列出所有已经创建的环境。
我们能看到如下环境列表,而你当前所在环境的旁边会有一个星号。默认的环境(即当我们不选定环境时使用的环境)名称为 root。

删除环境
如果我们不再使用某个环境,使用如下命令删除指定的环境:(在这里环境名为 envName)
conda env remove -n envName
最后重新再强调下,不要被上面的命令吓到。虽然上述命令多,给了谁都记不住的。后面你跟着我在知乎上多做项目,用的多了自然记住了。你只需要跟着上面步骤操作下,并理解了每一步是干什么的就可以了。后面遇到要做的事情,忘记了回头查这个文档就可以了。
conda的官方文档:https://conda.io/docs/user-guide/tasks/index.html
七、总结
以上就是Anaconda的全部入门内容了,相信有了它,在我们学习python的路上,我们一定能披荆斩棘,勇往直前!加油,各位~
参考资料:https://zhuanlan.zhihu.com/p/3433788
Python学习的路上,Anaconda送你一双遮天神翼的更多相关文章
- Python学习之路上的几个经典问题
1.python有三元运算符语法(类似C语言的"?")么? 语法如下: [on_true] if [expression] else [on_false] 如果[expressio ...
- Python学习—Anaconda详细 下载、安装与使用,以及如何创建虚拟环境,不仅仅只有安装步骤哦
上一期我们介绍了Python.Pycharm.Anaconda三者之间的关系以及使用,这一期主要详细介绍如何在Windows上下载和安装工具Anaconda,然后使用其自带的conda管理不同项目的虚 ...
- 学习python你必须弄懂的 Python、Pycharm、Anaconda 三者之间的关系
Python作为深度学习和人工智能学习的热门语言,学习一门语言,除了学会其简单的语法之外还需要对其进行运行和实现,才能实现和发挥其功能和作用.下面来介绍运行Python代码常用到的工具总结. 一.Py ...
- 【Machine Learning】Python开发工具:Anaconda+Sublime
Python开发工具:Anaconda+Sublime 作者:白宁超 2016年12月23日21:24:51 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现 ...
- 优秀Python学习资源收集汇总(强烈推荐)
Python是一种面向对象.直译式计算机程序设计语言.它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用縮进来定义语句块.与Scheme.Ruby.Perl ...
- [转]优秀Python学习资源收集汇总
Python是一种面向对象.直译式计算机程序设计语言.它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用縮进来定义语句块.与Scheme.Ruby.Perl ...
- python 学习资料
Python是一种面向对象.直译式计算机程序设计语言.它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用縮进来定义语句块.与Scheme.Ruby.Perl ...
- 优秀Python学习资源
优秀Python学习资源收集汇总(强烈推荐) Python是一种面向对象.直译式计算机程序设计语言.它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用縮 ...
- Python 学习笔记7
今天很残酷,明天很残酷,后天很美好.但绝大多数人会死在明天的路上.只有真正的勇士才能看到后天的太阳! Python学习是枯燥的.但是一定要坚持! 昨天学习了数据结构和模块. 今天学习输入和输出.错误与 ...
随机推荐
- exception is java.lang.IllegalArgumentException: No auto configuration classes found in META-INF/spring.factories. If you are using a custom packaging, make su re that file is correct.
spring cloud 项目使用maven 打包报错“No auto configuration classes found in META-INF/spring.factories” 在pom.x ...
- URI编码时遇到特殊字符的处理方式
今天遇到一个问题,在向一个地址发起get请求时,某个参数是这种形式:foo=xx&&yyyy,其中"&&"是参数值的一部分,在调用这个接口时,后台收 ...
- P3258 [JLOI2014]松鼠的新家 (简单的点差分)
https://www.luogu.org/problemnew/show/P3258 注意开始和最后结尾 #include <bits/stdc++.h> #define read re ...
- 顺序栈的基本操作(C语言)
由于现在只学了C语言所以就写这个C语言版的栈的基本操作 这里说一下 :网上和书上都有这种写法 int InitStack(SqStack &p) &p是取地址 但是这种用法好像C并不 ...
- usb协议栈学习笔记
1.usb 集线器为什么一般都是只有4个扩展口? PC的根集线器可为每个A型连接器提供5V.500mA电源.一个总线供电的外部集线器可为每个端口提供100mA电流.由于USB为为外部集线器电路分配10 ...
- HDMI SCDC处理过程
SCDC State and Control Data Channel 接收端如果有SCDC,应该在E-EDID中包含一个有效的HF-VSDB,并且把SCDC_Present位设置为1.在 ...
- SQL STUFF函数 拼接字符串 多列 合并成一列 转
关于和并列的 要这种效果. create table tb(idint, value varchar(10)) insert into tbvalues(1,'aa') insert into tbv ...
- android启动画面隐藏状态栏全屏显示
1.在根部局给一个id,然后直接设置就行了layout.setSystemUiVisibility(View.INVISIBLE); 状态栏就没有了. 2.如果你只是想改变状态栏颜色的也可以 //5. ...
- JSP的分页技术
在实际应用中,如果从数据库中查询的记录特别的多,甚至超过了显示屏的显示范围,这个时候可将结果进行分页显示. 假设总记录数为intRowCount,每页显示的数量为inPageSize,总页数为intP ...
- spring redis @Cacheable注解使用部分错误及无效原因
spring redis @Cacheable注解使用部分错误及无效原因 说明: spring项目用到redis注解无效,解决问题中遇到一堆BUG,各种搜索,看了许多错误解决方案一一测试,对于 ...