1. 引言
这里主要记录一下conda和pip的常用用法,顺便谈谈anaconda/conda/pip之间的一些区别。
2. 谈谈anaconda/conda/pip
- anaconda:简单来说,anaconda就是一个包含conda这个通用包管理器以及这种数据科学包的发行版软件
- conda:其实就是一个通用的包管理器。
- 说它通用是因为它可以管理多种语言的包,像Python/R等,虽然大多数人最初是为了使用Python而安装它。
- 基本不需要担忧包的依赖关系,大多数情况都能自动解决(这是如果单独Python并安装包时极为头疼的一件事)
- 有自带管理虚拟环境的工具(解决某些工具的冲突问题,像pytorch和tensorflow等)
- 使用的是二进制文件来管理
- pip:专门用于Python的包管理工具
- 与conda不同的是,只用于Python库的管理,但是可用包要比conda来得多。
- 有时会提示依赖关系的错误,需要自己手动解决
- 没有自带的管理虚拟环境的工具,需要用virtualenv等工具来解决
- 使用的是源码或者wheel文件来管理(使用可以在github找源码来安装或者下载wheel来安装)
- 可以同时使用conda和pip,不过可能会带来管理的混乱
3. conda的常用用法
3.1 conda信息
- 查看conda的版本
conda --version
- 查看conda的信息
conda --info
- 配置信息
第一次使用# 显示配置信息(可添加config中的选项) conda config --show # 显示channels的配置信息 conda config --show channels # 添加新的channels(默认源的速度较慢,可切换为清华源) conda config --add channels urls # 删除channels conda config --remove channels urls # 设置配置信息中的选项 conda config --set show_channel_urls yes
conda config
会自动生成.condarc
的配置文件,默认情况下是没有.condarc
的,也可以通过向.condarc
添加配置信息来修改默认配置
3.2包管理
# 查看conda版本
conda --version
# 更新conda
conda update conda
# conda安装包(默认安装最新的版本,如果指定大版本如3,默认会安装大版本中最新的版本如3.13)
conda install packages
conda install packages=version
conda install "packages>version1,<version2"
# conda更新包(也可以使用upgrade)
conda update packages
# 一次更新所有的包
conda update --all
# 卸载包(也可以使用uninstall)
conda remove packages
# 查找某个包在channels中所有可用版本
conda search packages
# 列出环境中已经安装的包(conda list),配合管道命令查找某个包
conda list | grep packages (linux)
conda list | find "packages" (windows)
3.3环境管理
# 列出当前已有的虚拟环境(默认只有base环境)
conda env list
conda info --env
# 创建虚拟环境(如创建pt_gpu,预先安装python3.8)
conda create --name pt_gpu python=3.8
# 克隆已有的虚拟环境
conda create --name pt_gpu --clone base
# 激活指定环境
conda activate pt_gpu
# 退出其他虚拟环境,进入base环境
conda deactivate
# 删除虚拟环境
conda env remove --name pt_gpu
4. pip的常用用法
4.1 包管理
# 安转包(默认更新的版本方式和conda的相同)
pip install package
pip install package==version (指定安装版本)
pip install "package>=version1,<version2"
# 保存requirements文件
pip freeze > requirements.txt
pip install -r requirements.txt
# 更新pip
pip install pip -U
# 更新包
pip install --upgrade packages
# 一次更新所有未更新的包(用于linux, -o用于查看当前为旧版的包,cut从每一行中提取包的名字,xargs把包当成参数使用pip install --upgrade)
pip list -o | cut -d " " -f1 | xargs -n1 pip install --upgrade
# 查找所有可用版本的包
pip search packages
# 更换清华源的pip(设为默认)
pip install pip -U
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple