Anaconda是什么?香吗?
用Anaconda是不可能用Anaconda的,这辈子都不可能用Anaconda的。——鲁迅
(本文由吃核桃不吐核桃壳编写,未经许可不允许转载)
Anaconda是什么???
有很多人在网上问:“装了Anaconda还需要Python吗?”每次听到这个问题,我就傻了—— Anaconda不就是Python吗? Anaconda其实就是一个Python的发行版,她自带了Ipython,Cython等Python解释器,以及例如numpy,panda等有关数据分析的常用第三方库,spyder,Jupyter等工具,当然还有最终于的库管理神奇:conda。 一开始,我一直在使用官网的Cython解释器,听说Anaconda的时候,也只是看看而已,甚至还有一些抵触情感。比普通的Python解释器更大的大小,多出来的无用的功能,都让我觉得仿佛失去了Python的灵魂。直到我真的尝试了一下Anaconda……
真香。——鲁迅
吹爆Anaconda!
Anaconda是最令人省心的Python解释器。我以前一直不相信,直到我入门了机器学习领域。 机器学习需要用到的是大量的第三方库,然而Anaconda已经帮你解决了这些繁琐的安装。 一步到位,捷足先登。
开源,没啥好说的。
安装的过程非常的简单!连环境变量都不需要自己设置!
拥有免费的社区支持。每天有无数个程序员在参与Anaconda的更新与建设!
而且臃肿的功能也得到了解决,如果和我一样不希望拥有一个很大的Python解释器,可以下载Miniconda这个较小的发行版,仅仅包含了Python和conda。但不可否认,这样极端的处理方式的确是Anaconda的一个缺点,如果能够通过选择自己所属的领域和需要的库来生成安装包就完美了!
同时,Anaconda还有虚拟版本等等很强大的功能,我将会在下文为大家介绍。
安装Anaconda
这里只提及Windows下的anaconda安装,至于Mac和Linux可以参考这篇文章Anaconda介绍、安装及使用教程
去官网下载。选择适合自己的安装包下载。(64位or32位,python3.7or2.7)
双击安装包文件开始安装~
-
Info
如果在安装过程中遇到任何问题,那么暂时地关闭杀毒软件,并在安装程序完成之后再打开。
如果在安装时选择了“为所有用户安装”,则卸载Anaconda然后重新安装,只为“我这个用户”安装。 选择“Next”。
阅读许可证协议条款,然后勾选“I Agree”并进行下一步。
除非是以管理员身份为所有用户安装,否则仅勾选“Just Me”并点击“Next”。
在“Choose Install Location”界面中选择安装Anaconda的目标路径,然后点击“Next”。
-
在“Advanced Installation Options”中不要勾选“Add Anaconda to my PATH environment variable.”(“添加Anaconda至我的环境变量。”)。因为如果勾选,则将会影响其他程序的使用。如果使用Anaconda,则通过打开Anaconda Navigator或者在开始菜单中的“Anaconda Prompt”(类似macOS中的“终端”)中进行使用。
除非你打算使用多个版本的Anaconda或者多个版本的Python,否则便勾选“Register Anaconda as my default Python 3.6”。
然后点击“Install”开始安装。如果想要查看安装细节,则可以点击“Show Details”。
[图片上传失败...(image-d23d4b-1593010273257)]
点击“Next”。
进入“Thanks for installing Anaconda!”界面则意味着安装成功,点击“Finish”完成安装。
-
注意:如果你不想了解“Anaconda云”和“Anaconda支持”,则可以不勾选“Learn more about Anaconda Cloud”和“Learn more about Anaconda Support”。
[图片上传失败...(image-1f5539-1593010273257)]
验证安装结果。可选以下任意方法:
“开始 → Anaconda3(64-bit)→ Anaconda Navigator”,若可以成功启动Anaconda Navigator则说明安装成功。
“开始 → Anaconda3(64-bit)→ 右键点击Anaconda Prompt → 以管理员身份运行”,在Anaconda Prompt中输入
conda list
,可以查看已经安装的包名和版本号。若结果可以正常显示,则说明安装成功。自行添加环境变量(可选) 为了保证其他程序的正常运行,我们没有勾选“Add Anaconda to my PATH environment variable.”但是在cmd里打Python却打不开的感觉真的很不舒服。所以我们来自行添加一下环境变量。
右键“此电脑”,属性。 [图片上传失败...(image-3b9dd3-1593010273257)]
单击左侧的高级系统设置 [图片上传失败...(image-9df664-1593010273257)]
点击环境变量 [图片上传失败...(image-77f027-1593010273257)]
找到path环境变量,并添加这四行(根据自己的安装路径添加,我这里是D:\Anaconda) [图片上传失败...(image-ddc729-1593010273257)]
win+R输入cmd回车打开命令行,输入python,你会看到这个: [图片上传失败...(image-787f71-1593010273257)]
Yep!We got it!到这里,我们的安装就正式结束了,享受它给你带来的便利以及你的编程之旅吧!
(先去喝杯可乐,听一首歌吧(我这里在听Don‘t look back,啊这好像是废话,不应该写到blog里的))
conda的使用
[图片上传失败...(image-57ae4e-1593010273258)]
我们来看一下conda。
conda和pip一样,是库管理工具。 但相比pip,conda有以下的优点: → 依赖项检查
-
pip:
不一定会展示所需其他依赖包。
安装包时或许会直接忽略依赖项而安装,仅在结果中提示错误。
-
conda:
列出所需其他依赖包。
安装包时自动安装其依赖项。(哇塞这个真的舒服啊)
可以便捷地在包的不同版本中自由切换。 → 环境管理
pip:维护多个环境难度较大。
conda:比较方便地在不同环境之间进行切换,环境管理较为简单。 → 对系统自带Python的影响
pip:在系统自带Python中包的更新/回退版本/卸载将影响其他程序。
conda:不会影响系统自带Python。 → 适用语言
pip:仅适用于Python。
conda:适用于Python, R, Ruby, Lua, Scala, Java, JavaScript, C/C++, FORTRAN。
conda的常用姿势
<pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="" cid="n109" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-radius: 3px; padding: 8px 4px 6px; margin-bottom: 15px; margin-top: 15px; width: inherit; color: rgb(51, 51, 51); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">conda --version</pre>
这一条命令会输出conda的版本,如果没有报错说明的你conda可以正常使用。
<pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="" cid="n111" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-radius: 3px; padding: 8px 4px 6px; margin-bottom: 15px; margin-top: 15px; width: inherit; color: rgb(51, 51, 51); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">conda update conda</pre>
更新conda
<pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="" cid="n113" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-radius: 3px; padding: 8px 4px 6px; margin-bottom: 15px; margin-top: 15px; width: inherit; color: rgb(51, 51, 51); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">conda update --all </pre>
更新所有的包
<pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="" cid="n115" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-radius: 3px; padding: 8px 4px 6px; margin-bottom: 15px; margin-top: 15px; width: inherit; color: rgb(51, 51, 51); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">conda install <packet-name></pre>
安装某一个包,这里会自动安装依赖项,不用担心。(这里的<packet-name>并不是让你打“<packet-name>”,而是代表包的名字,下文同) 这里可能会出现请求失效或者404错误,需要还成国内的源,步骤如下:
- 添加清华的镜像源,命令如下
<pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="" cid="n119" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-radius: 3px; padding: 8px 4px 6px; margin-bottom: 15px; margin-top: 15px; width: inherit; color: rgb(51, 51, 51); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
设置搜索时显示通道地址
conda config --set show_channel_urls yes</pre>
哦对了,如果需要安装pytorch,还要多加一个源:
<pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="" cid="n122" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-radius: 3px; padding: 8px 4px 6px; margin-bottom: 15px; margin-top: 15px; width: inherit; color: rgb(51, 51, 51); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/</pre>
<pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="" cid="n124" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-radius: 3px; padding: 8px 4px 6px; margin-bottom: 15px; margin-top: 15px; width: inherit; color: rgb(51, 51, 51); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">conda list</pre>
列出已经安装的包
更多的命令可以输入conda help
查看
重头戏,环境管理。
想象一下,你千辛万苦的搞定了python3.7的环境,忽然接到同事的电话,告诉你有一个新的项目,用的python2.7。 是不是心态崩了呢??? 难道需要再安装一个2.7的python解释器吗?当然不用,环境管理正是anaconda的拿手好戏。
- 创建一个新的环境
<pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="" cid="n131" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-radius: 3px; padding: 8px 4px 6px; margin-bottom: 15px; margin-top: 15px; width: inherit; color: rgb(51, 51, 51); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">conda create --name <env_name> <package_names></pre>
这一条命令将会创建一个新的python环境。
-
注意:
<env_name>即创建的环境名。建议以英文命名,且不加空格,名称两边不加尖括号“<>”。
<package_names>即安装在环境中的包名。名称两边不加尖括号“<>”。
如果要安装指定的版本号,则只需要在包名后面以=和版本号的形式执行。如:conda create --name python2 python=2.7,即创建一个名为“python2”的环境,环境中安装版本为2.7的python。
如果要在新创建的环境中创建多个包,则直接在<package_names>后以空格隔开,添加多个包名即可。如:conda create -n python3 python=3.5 numpy pandas,即创建一个名为“python3”的环境,环境中安装版本为3.5的python,同时也安装了numpy和pandas。
--name同样可以替换为-n。
提示:默认情况下,新创建的环境将会被保存在anaconda目录下的envs目录下。
- 切换环境
<pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="" cid="n151" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-radius: 3px; padding: 8px 4px 6px; margin-bottom: 15px; margin-top: 15px; width: inherit; color: rgb(51, 51, 51); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">activate <env_name> </pre>
这一步需要在anaconda prompt里运行。 [图片上传失败...(image-f325d4-1593010273258)]
- 列出已经创建的环境
<pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="" cid="n156" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-radius: 3px; padding: 8px 4px 6px; margin-bottom: 15px; margin-top: 15px; width: inherit; color: rgb(51, 51, 51); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">conda info --envs</pre>
尾声
这一篇博客到这里就要结束了。希望能帮助各位,在这里祝愿大家能够把编程坚持学下去,我也会在这一条路上帮助大家的。
参考资料: