前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住给大家分享一下。点击跳转到网站:https://www.captainai.net/dongkelun

介绍
Conda 是一个开源的软件包和环境管理系统,在数据科学、机器学习、科学计算等领域广泛应用
主要用途
- 环境管理:能够创建相互隔离的虚拟环境,每个环境可以有不同的 Python 版本以及不同的软件包版本,以此避免不同项目间的依赖冲突。比如,项目 A 依赖 Python 3.7 和 numpy 1.18,项目 B 依赖 Python 3.9 和 numpy 1.21,使用 Conda 就能为这两个项目分别创建独立的环境。
- 软件包管理:Conda 可快速安装、更新和卸载软件包,并且能自动处理软件包之间的依赖关系。例如,安装 TensorFlow 时,Conda 会自动安装其依赖的 numpy、protobuf 等软件包。
特点
- 跨平台性:支持 Windows、macOS 和 Linux 等多种操作系统,在不同操作系统上都能使用相同的命令进行环境和软件包管理。
- 多语言支持:虽然常与 Python 搭配使用,但也能管理其他编程语言的软件包,像 R、Java 等。
- 强大的依赖解析:能自动分析并解决软件包之间的依赖冲突,保证安装的软件包版本相互兼容。
核心概念
- 环境(Environment):一个独立的、隔离的软件包集合,其中包含特定版本的 Python 解释器和一系列软件包。你可以按需创建、激活、停用和删除环境。
- 通道(Channel):是软件包的存储库,Conda 会从通道中下载软件包。常见的通道有 defaults、conda-forge 等。不同通道可能包含不同的软件包或同一软件包的不同版本。
- 软件包(Package):是预先编译好的软件组件,可通过 Conda 进行安装、更新和卸载。
安装
1 | wget -c https://repo.anaconda.com/archive/Anaconda3-2024.10-1-Linux-x86_64.sh |
安装路径默认:/root/anaconda3,可以更改为其他路径,比如 /opt/anaconda3
环境变量
1 | vi /etc/profile |
1 | export PATH=/opt/anaconda3/bin:$PATH |
1 | source /etc/profile |
更换镜像源
conda
1 | vi ~/.condarc |
1 | channels: |
注:根据实际情况选择是否保留 defaults ,如果明确不需要可以不保留,另外如果配置了 clash 代理,保留 defaults 会影响正常使用。
pip
1 | mkdir ~/.pip |
1 | [global] |
常用命令
Channel
添加单个渠道
1 | # 新添加的通道在最前面(优先级最高) |
执行该命令会将渠道添加到 ~/.condarc
查看当前配置的渠道
1 | conda config --show channels |
默认:1
2channels:
- defaults
如果按照上面的步骤添加了 ~/.condarc ,则返回 ~/.condarc 中的渠道:1
2
3
4
5
6
7
8channels:
- conda-forge
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
- defaults
- https://conda.anaconda.org/conda-forge
与 ~/.condarc 中的内容一致。
删除渠道
1 | conda config --remove channels <channel_name_or_url> |
设置渠道优先级
1 | conda config --set channel_priority strict |
- strict : 严格优先级,当启用严格优先级时,Conda 会严格按照通道在配置中的顺序来选择包
- 优先从排序靠前的通道中安装包,只有当靠前的通道中没有所需包时,才会考虑后面的通道;
- 即使后面的通道中有更新版本的包,也会优先选择前面通道中的旧版本。
- flexible : 灵活优先级,灵活优先级模式下,Conda 会综合考虑所有通道,优先选择最新版本的包,而不完全受通道顺序的限制。
- 会从所有可用通道中选择满足依赖条件的最新版本包,即使该包来自排序较后的通道。
- 通道顺序仍有一定影响,但版本新旧是更重要的判断因素。
查看渠道优先级
1 | conda config --show channel_priority |
常见 conda 渠道及其地址
- Anaconda 官方渠道
- 名字:defaults
- 地址:它包含多个子仓库,例如:
- https://repo.anaconda.com/pkgs/main:主要包含核心的、常用的跨平台软件包,像 Python 解释器、numpy、pandas 等。
- https://repo.anaconda.com/pkgs/r:专门用于 R 语言相关的软件包。
- https://repo.anaconda.com/pkgs/msys2:提供 Windows 系统上的 MSYS2 环境相关的软件包。
- conda-forge
- 名字:conda-forge
- 地址:https://conda.anaconda.org/conda-forge
这是一个社区驱动的渠道,提供大量更新及时、种类丰富的软件包,涵盖了众多领域,是很多用户常用的渠道之一。
- bioconda
- 名字:bioconda
- 地址:https://conda.anaconda.org/bioconda
专注于生物信息学领域的软件包,如果你从事生物信息学研究或开发,这个渠道非常有用,包含了如 bwa、samtools 等常用工具。
- pytorch
- 名字:pytorch
- 地址:https://conda.anaconda.org/pytorch
主要提供 PyTorch 深度学习框架及其相关依赖库,方便用户安装和管理 PyTorch 环境。
清华大学镜像源
channels:
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
环境
创建环境
基础创建命令
1 | # 创建指定名称的环境(默认使用当前 Conda 配置的 Python 版本,即 base 环境中的 Python 版本) |
指定 Python 版本创建环境
1 | # 创建指定 Python 版本的环境 |
指定路径
通过 -n 指定环境名称方式创建的 Python 环境,默认路径为 /root/anaconda3/envs/环境名
1 | conda create -p /opt/python/envs/python3 python=3.8 |
-n 和 -p 不能同时指定,通过 -p 指定路径时如果路径不是在默认路径下,那么该环境没有环境名,只有对应的路径
创建环境时同时安装包
1 | # 创建环境并安装指定包 |
从配置文件创建环境
1 | # 从 environment.yml 文件创建环境 |
举例:tpcx-ai 中的创建环境命令:1
conda env create --prefix ./lib/python-venv-ks --file tools/python/python-ks.yaml
python-ks.yaml :1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35name: python-venv-ks
dependencies:
- python=3.9
- setuptools=58.0
- pandas=1.5.2
- scikit-learn=1.2.2
- xgboost=1.7.3
- numpy=1.23.5
- nose=1.3.7
- scipy=1.10.0
- statsmodels=0.12.2
- patsy=0.5.3
- tqdm=4.65
- keras=2.11.0
- tensorflow=2.11.0
- joblib=1.1.1
- opencv=4.6.0
- pyyaml=6.0
- matplotlib=3.7.1
- jinja2=3.1.2
- pycryptodome=3.15
- gcc_linux-64=11.2.0
- gxx_linux-64=11.2.0
- cmake=3.9.1
# pip
- pip
- pip:
- --index-url http://mirrors.aliyun.com/pypi/simple/
- --trusted-host mirrors.aliyun.com
#-workloads
- tensorflow-addons==0.19.0
- scikit-surprise==1.1.3
- librosa==0.8.1
- imbalanced-learn==0.10.1
- dlib
上面的 yaml 指定了环境的名称,conda 的依赖,conda 会下载 pip ,同时指定了 pip 的依赖,下载完 pip 后,再用 pip 下载后面的依赖。
创建环境时指定通道
1 | # 指定额外的通道来安装包 |
查看有哪些环境
1 | conda env list |
克隆已有环境
1 | # 克隆现有环境(复制一个相同的环境) |
删除环境
1 | conda env remove -n <environment_name> |
激活环境
1 | conda activate <environment_name> |
效果:
- 激活后,命令行提示符前会显示 (环境名称),表示当前处于该环境中
- 用 conda env list 查看有哪些环境
- 对于有名称的既可以使用名称激活也可以使用路径激活,激活后显示名称 (在默认路径下 /root/anaconda3/envs 的都有名称)
- 对于没有名称的只能用路径激活,如果该路径的父路径的名称为 envs 则显示名称,名称为最后一级路径名,如果父路径的名称不是 envs ,则显示绝对路径
- 此时安装的包会被安装到该环境中
- 调用的 Python 解释器和相关工具都是该环境下的版本
退出当前激活的环境
1 | conda deactivate |
效果:
- 退出后,命令行提示符前的 (环境名称) 会消失
- 回到 Conda 的基础环境(base)或系统默认环境
依赖
查看某个依赖有哪些版本可以下载
1 | conda search <package_name> |
使用 Conda 查看已安装依赖
1 | # 查看当前激活环境中的所有已安装包 |
使用 pip 查看已安装依赖
1 | # 查看当前环境中 pip 安装的所有包 |
使用conda删除依赖
1 |
|
使用 pip 删除依赖
1 | # 在当前激活的环境中删除指定包 |
清理缓存:
1 | conda clean --all |
pip 安装不用缓存
1 | pip install --no-cache-dir |