一、背景
最近在学习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命令,接着下面继续操作:
首先配置下载包使用清华仓库镜像,这样更新会快一些:
代码语言:javascript复制conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --set show_channel_urls yes
为了避免后面使用报错,你需要先更新下所有包。在终端输入更新所有包的命令:
代码语言:javascript复制conda upgrade --all
并在提示是否更新的时候输入 y(Yes)让更新继续。初次安装下的软件包版本一般都比较老旧,因此提前更新可以避免未来不必要的问题。
如果以上命令运行后报错,参考这里的解决办法:https://zhuanlan.zhihu.com/p/34337889
五、如何管理包
- 安装包 在终端中键入: 例如,要安装 pandas,在终端中输入: conda install pandas 你还可以同时安装多个包。类似 conda install pandas numpy 的命令会同时安装所有这些包。conda 还会自动为你安装依赖项。例如,scipy 依赖于 numpy,因为它使用并需要 numpy。如果你只安装 scipy (conda install scipy),则 conda 还会安装 numpy(如果尚未安装的话)。
conda install package_name
- 卸载包 在终端中键入 : 上面命令中的package_name是指你要卸载包的名称,例如你想卸载pandas包: conda remove pandas
conda remove package_name
- 更新包 在终端中输入: 如果想更新环境中的所有包(这样做常常很有用),使用: conda update --all
conda update package_name
- 列出已安装的包 在终端中键入:
conda list
- 查找包 如果我们不知道要找的包的全名称,我么可以尝试使用 conda search search_term 进行搜索。比如,我想安装numpy,但我不知道确切的包名称。我们可以这样尝试:
conda search num
六、如何管理环境
conda 可以为我们不同的项目建立不同的运行环境,首先我们安装nb_conda用于notebook自动关联nb_conda的环境:
代码语言:javascript复制conda install nb_conda
并在提示是否更新的时候输入 y(Yes)让安装继续。
- 创建环境 在终端中使用: 命令中,envName 是我们设置环境的名称(-n 是说该选项后的envName是我们要创建环境的名称),package_name 是我们要安装到将要创建的环境中的包名称。 例如,要创建环境名称为 py3 的环境并在其中安装 python 3.5,在终端中输入 : conda create -n py3 python=3.5
conda create -n envName package_name
- 创建环境时,可以指定要安装在环境中的 Python 版本 当我们同时使用 Python 2.x 和 Python 3.x 中的代码时这很有用。这就要创建具有特定版本 Python 的环境,比如创建环境名称为py3,并安装最新版本的Python3命令: 当然我们也可以这样创建环境名称为py2,并在该环境中安装最新版本的Python2: conda create -n py2 python=2 因为我们的项目要求不同,有时会用Python2,还有时会用Python3。所以我们需要在自己计算机上创建这两个环境,并分别取类似这样的环境名称:py2,py3。这样我们就可以根据不同的项目轻松切换不同版本的python。 如果我们要安装特定版本(例如 Python 3.5),请使用: conda create -n py python=3.5
conda create -n py3 python=3
- 进入环境 在 OSX/Linux 上我们使用 source activate my_env_name 进入环境。在 Windows 上我们使用 activate my_env_name进入环境。 进入环境后,我们会在终端提示符中看到当前环境名称,下图说明我们进入py3的环境(这里的py3是我们上面创建环境时自己起的名称,你可以随意起自己喜欢的 名称)。
进入环境后,我们用conda list 来查看环境中默认安装的几个包:
在环境中安装包的命令与前面一样: 不过,这次你安装的特定包仅在你进入环境后才可用。
代码语言:javascript复制conda install package_name
- 退出环境 在 OSX/Linux 上 输入: 在 Windows 上,终端中输入: deactivate
source deactivate
- 共享环境 共享环境是工作中非常有用,它能让其他开发人员一键安装所有你在代码中使用的包,并且还能确保这些包的版本正确和你使用的一致。例如你开发了一个电商平台数据分析系统,你要把项目提交给负责项目部署的王五让他来给你部署项目,但是这货并不知道你开发时都使用了哪些依赖包及python版本,这可如何是好? 这时候你就可以在当前的环境的终端中执行 conda env export -f environment.yml 或者conda env export > environment.yml命令将当前的环境以及依赖包等描述保存到指定的YAML文件(包括Pyhton版本以及所有依赖包的名称和版本)。 命令中的前半部分部分 conda env export 用于输出环境中的所有包的名称和版本信息(包括 Python 版本)。这样在我们指定的路径下可以看到导出的环境文件 :
我们在 GitHub 等开源仓库上共享代码时,最好以这样的方式同时创建环境文件并将其上传到代码库中。这可以让别人很轻松地安装你的代码及其所有依赖项。 导出的环境文件,在其他电脑环境中如何使用呢? 首先在conda中进入你的环境,比如activate py3,然后在使用以下命令更新你的环境:
对于那些兵不使用 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是该文件在你电脑上的实际路径。
代码语言:javascript复制# 其中-f表示你要导出文件在本地的路径,所以/path/to/environment.yml要换成你本地的实际路径
conda env update -f /path/to/environment.yml
- 列出环境 当我们创建的环境越来越多,我们有时候会忘记自己创建的环境名称,这时我们用 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