anaconda使用技巧
本文主要参考了这篇文章,对anaconda的相关基础知识进行了总结。
anaconda的安装可以参考这两篇文章:超详细Anaconda安装教程(简单直接安装清华源版本)、最新Anaconda3的安装配置及使用教程(详细过程)(普通版本和清华版本都介绍了)
1 编程环境管理的重要性
所谓的编程环境和我们平时说的环境是差不多的意思,只不过编程环境和编程有关,编程通常会设计到很多已经造好的轮子(也就是各种包)。
不同的编程环境其实就是不同的python版本或者包/库的版本,以python和pytorch举例:
- 3.6版本的python + 1.3版本的torch
- 3.6版本的python + 1.7版本的torch
- 3.8版本的pytho + 1.7版本的torch
以上每一个都算是一个环境,当在代码中输入import torch
,以上对于不同环境就会导入不同的torch。
因为需要一个环境管理器,anaconda就是一个环境管理器,可以实现不同环境的不同版本,相互隔离。
其实,目前比较流行的两种环境设置工具有:
- PIP(python包管理器;它代表着“Pip Installs Packages”)和virtualenv(用于创建隔离环境的工具)
- Conda(包和环境管理器)
Conda的特点:
- 结构清晰:易于理解其目录结构
- 透明文件管理:它不会在其目录之外安装文件
- 灵活性:它包含很多包(PIP包也可以安装在Conda环境中)
- 多用途:它不仅用于管理python环境和包,还可以用于R语言(一种用于统计计算的编程语言)
2 Conda的安装
Conda总共有三种形式,它们对应的特点如下:
版本 | 特点 |
---|---|
Anaconda | 免费;3GGB:包含150多个科学软件包,还有GUI工具——Anaconda Navigator |
Miniconda | 免费;400MB;只包含几个基本包,无GUI工具 |
Anaconda Enterprise | 商业产品,允许组织在企业环境中应用python和R |
平台和操作系统位数根据自己电脑进行选择。
3 Conda的目录结构
在conda的安装目录下,包含了根环境和两个重要文件夹(其他的文件夹暂时不管):
\pkgs
(包含压缩和未压缩格式的缓存包)\envs
(包含所有环境,但除了根环境,根环境在单独的子目录里)
Conda环境中最重要的可执行文件和文件夹(放在\envs\environmentname
文件夹中):
\python.exe
——用于命令行应用程序的Python可执行文件。例如,在文件夹Example App
中,输入python exampleapp.py
则可以执行Python文件。\pythonw.exe
——用于GUI应用程序或完全无UI应用程序的Python可执行文件。\Scripts
——作为已安装软件包的一部分可执行文件。激活环境后,此目录将添加到系统路径中,因此可执行文件无需完整路径即可使用。\Scripts\activate.exe
——命令行中用于激活环境。\Scripts\jupyter-notebook.exe
——(如果按照了Jupyter笔记本的话就会存在)Jupyter 笔记本启动器(jupyter包的一部分)。简而言之,Jupyter Notebook 创建了所谓的笔记本文档,其中包含可执行部分(例如 Python)和人类可读部分。
4 python的版本管理
首先最重要的是根环境,字面意思也就是最根本的环境。根环境就是安装anaconda的时候就安装好了,环境的名称叫做root
,在命令行工具anaconda prompt
中,会这么显示:
(root)C:\anaconda:
也就是说在正常的命令行的文件夹前还有一个环境的名称。
下面介绍几个常用的管理环境版本的命令:
- 创建环境:
conda create -n env_name python=version_numbers
- 删除环境:
conda remove -n env_name --all
- 复制环境:
conda create -n env_name --clone env_name2
- 激活环境:
conda activate env_name
- 退出环境:
conda deactivate env_name
- 显示可用环境:
conda env list
- 获取当前活动环境的conda版本:
conda --version
- 获取有关环境的详细详细列表:
conda info
5 包/库的管理
首先,package channel这个概念要了解一下,以人话来说就是——包的通道,可以理解成一个串行的管子,其实我觉得就是安装的源。关于通道有以下几点说明:
- 通道(channel)是Conda查找包的存储库的位置,在Conda安装好后,通道也就有了默认设置,可以不用修改。
- 通道以分层顺序存在。通道是具有优先级的,Conda找包的时候都是从高优先级的通道开始找,通道是可以添加的,这个优先级也是可以更改的。
- 好的习惯和做法——将通道作为最低优先级项目添加到通道列表中。以免一些特殊的包覆盖掉默认的包。
- anaconda官方包网站:这个网站包含了所有的特殊包,但安装时要注意操作系统和位数
关于通道的管理的几个常用命令:(假设新通道命名为newchannel)
- 添加最低优先级的通道:
conda config --append channels newchannel
- 添加最高优先级的通道(这算一种极端情况,不建议使用):
conda config --prepend channels newchannel
- 列出活动通道及优先级:
conda config --get channels
注意:如果多个通道包含同一个包,但是版本不一样,那么通道的优先级会决定时安装哪一个版本的包。
关于包/库的管理的几个常用命令:
- 列出已安装的软件包:
conda list
- 搜索某个包的所有可用版本:
conda search -f package_name
- 安装位于通道列表中的软件包(默认为最高优先级通道的最新包):
conda install package_name
- 安装指定包的版本:
conda install package_name=version_numbers
- 从通道列表外的通道安装:
conda install -c channel_name package_name
- 更新所有已安装的软件包:
conda update
- 更新指定包:
conda update package_name
- 删除包:
conda remove seaborn
- 可用使用pip安装软件包,但不推荐:
pip install package_name
通常,有些软件包你可能希望它不更新,那么也有方法用于固定包的版本,也就是防止其更新:在当前环境所在的文件夹的conda-meta
文件夹中新建一个pinned
文件,并按照以下格式输入:
package1 0.7.*
package2 == 0.1.7
其实在命令行中就是类似这么一句命令(下面那句是固定python版本):
echo "python==2.7.4" > G:\Python\anaconda3\envs\test\conda-meta\pinned
如果需要忽视pinned文件,可使用(也就是在命令最后加一个--no-pin
):
conda install --no-pin
其实,python也是一个软件包,所有也可以用以上的方法,比如替换当前的python版本为3.4.2的版本:
conda install python=3.4.2
比如将python版本更新到其分支的最新版本(例如将3.4.2从3.4分支更新到3.4.5):
conda update python