pip 与 conda
pip 与 conda
简介
pip 是接触 python 后最早认识的包管理工具。通过使用 pip 能够自动下载和解决不同 python 模块的依赖问题,使 python 的配置过程变得简单。
与 pip 类似,conda 也是一个开源软件的包管理系统和环境管理系统。conda 可分为 anaconda 和 miniconda,anaconda 包含一些科学计算常用的 python 包,miniconda 为精简版。conda 安装的包是二进制版本,因此其作用不仅包括安装 python 包,还可以安装任何语言编写的程序。此外,还有报告表明 conda 安装的软件能够提供更好的性能[1]。conda 的出现解决了 pip 只能安装 python 包的问题,对于 HDF5、MKL、LLVM 等不提供 setup.py 的安装模式的软件也可以直接安装。关于 conda 和 pip 的不同区别可以看下表[2]
| 类别 | conda | pip |
|---|---|---|
| 管理 | 二进制 | wheel 或源码 |
| 需要编译器 | no | yes |
| 语言 | any | Python |
| 虚拟环境 | 支持 | virtualenv 或 venv |
| 依赖性检查 | yes | 用户选择 |
| 包来源 | Anaconda repo和cloud | PyPi |
pip 使用
由于 conda 现在已经可以实现 pip 全部功能,因此并不推荐继续使用 pip,但是这里还是介绍一些常用命令,方便用户将用 pip 安装的软件进行卸载。
> pip list # 查看安装软件列表
> pip uninstall <pkg_name> # 删除软件
> pip install <pkg_name> # 安装软件
> pip install --upgrade <pkg_name> # 升级软件
conda 使用
conda 使用时提供了三个概念:虚拟环境、通道和包。
通过虚拟环境,conda 提供了 python 编程时环境隔离功能。conda 的环境与 module 环境管理不同,conda 更多用于管理不同版本的 python 和不同版本包。在不同环境中,安装的包,如 numpy、scipy、torch、tensorflow 可以互不相同,只要虚拟环境内部保证软件的依赖得到满足即可。
下面介绍 conda 使用时常用的命令。创建和激活环境的命令为
> conda create -n <env_name> python=3.6 # 使用特定 py 版本新建环境
> conda activate <env_name> # 激活环境
> conda deactivate <env_name> # 退出环境
> conda remove -n <env_name> --all # 删除环境及所有包
通道(channel)指包下载包时使用的镜像源网址。在国内可以使用清华镜像网站提高下载速度
> conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
> conda config --remove channels <channel_name or url>
conda 在解析环境时,由于要将所有 channel 扫一遍,在遇到 repo.continuum 时 会非常慢。根据清华源的文档设置镜像后,可进一步手动修改 ~/.condarc 屏蔽默认的 channel (defaults) 以提高解析速度。
channels:
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
- defaults << 去掉这一行!
show_channel_urls: true
安装软件包相关命令包括
> conda install -c <channel_name> -n <env_name> <pkg_name>
> conda uninstall -c <channel_name> -n <env_name> <pkg_name>
集群中 conda 配置使用
在集群中,intel-2020 版本的 intelpython3 自带了 conda 包。使用如下命令初始化 intelpython 环境
> source /opt/intel/2020/intelpython3/bin/activate
此时,查看 conda 是否为 intel 包中软件
> which conda
/opt/intel/2020/intelpython3/condabin/conda
输入 conda 初始化命令
> conda init
no change /opt/intel/2020/intelpython3/condabin/conda
no change /opt/intel/2020/intelpython3/bin/conda
no change /opt/intel/2020/intelpython3/bin/conda-env
no change /opt/intel/2020/intelpython3/bin/activate
no change /opt/intel/2020/intelpython3/bin/deactivate
no change /opt/intel/2020/intelpython3/etc/profile.d/conda.sh
no change /opt/intel/2020/intelpython3/etc/fish/conf.d/conda.fish
no change /opt/intel/2020/intelpython3/shell/condabin/Conda.psm1
no change /opt/intel/2020/intelpython3/shell/condabin/conda-hook.ps1
no change /opt/intel/2020/intelpython3/lib/python3.7/site-packages/xontrib/conda.xsh
no change /opt/intel/2020/intelpython3/etc/profile.d/conda.csh
modified /home/lilongxiang/.bashrc
No action taken.
可以看到,此时个人目录下 .bashrc 文件已经修改,添加了如下 conda 初始化命令。
# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$('/opt/intel/2020/intelpython3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"
if [ $? -eq 0 ]; then
eval "$__conda_setup"
else
if [ -f "/opt/intel/2020/intelpython3/etc/profile.d/conda.sh" ]; then
. "/opt/intel/2020/intelpython3/etc/profile.d/conda.sh"
else
export PATH="/opt/intel/2020/intelpython3/bin:$PATH"
fi
fi
unset __conda_setup
# <<< conda initialize <<<
当使用 zshell 时,需要把上面的 shell.bash 改为 zshell,然后放入 .zshrc 配置文件中。
下面以 pandoc 为例,介绍 conda 安装软件过程。输入如下命令开始安装
> conda install pandoc
Collecting package metadata (current_repodata.json): done
Solving environment: done
## Package Plan ##
environment location: /opt/intel/2020/intelpython3
added / updated specs:
- pandoc
The following NEW packages will be INSTALLED:
gmp pkgs/main/linux-64::gmp-6.1.2-h6c8ec71_1
pandoc pkgs/main/linux-64::pandoc-2.2.3.2-0
Proceed ([y]/n)?
输入 yes 后显示安装并没有成功。
Preparing transaction: done
Verifying transaction: failed
EnvironmentNotWritableError: The current user does not have write permissions to the target environment.
environment location: /opt/intel/2020/intelpython3
uid: 1014
gid: 1015
其根本原因是在当前环境下(base),用户没有权限执行安装命令。解决办法是新建一个虚拟环境 myenv,新的环境默认位置为 ${HOME}/.conda/envs/myenv。此时,切换到新环境后再进行安装即不再有权限问题。
> conda install pandoc
Collecting package metadata (current_repodata.json): done
Solving environment: done
## Package Plan ##
environment location: /home/lilongxiang/.conda/envs/myenv
added / updated specs:
- pandoc
The following NEW packages will be INSTALLED:
gmp pkgs/main/linux-64::gmp-6.1.2-h6c8ec71_1
intelpython conda_channel/linux-64::intelpython-2020.0-1
libgcc-ng conda_channel/linux-64::libgcc-ng-9.1.0-hdf63c60_0
libstdcxx-ng conda_channel/linux-64::libstdcxx-ng-9.1.0-hdf63c60_0
pandoc pkgs/main/linux-64::pandoc-2.2.3.2-0
zlib conda_channel/linux-64::zlib-1.2.11-h14c3975_7
Proceed ([y]/n)? y
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
(myenv)
pip 与 conda的更多相关文章
- pip和conda安装源更改
pip和conda安装源更改 python模块安装,使用国内源可以提高下载速度. pip源更改: pip源有好几个,我一直用的清华的pip源,它5分钟同步一次. 临时使用: pip 后加参数 -i h ...
- Scrapy安装教程 pip 或 conda 两种安装方法.
cmd: pip -V 查看pip版本 pip install --upgrade pip 升级最高版本 https://sourceforge.net/projects/py ...
- pip与conda的区别
pip和conda到底有什么不一样? 今天看到我的foreman开始报错去询问才发现.我们的python包管理工具已经从pip整体迁移到了conda..最近的迁移真的非常多..前端也在迁移打包 跟着发 ...
- pip和conda添加国内清华镜像源(亲测有效)
文章目录 pip和conda 添加国内清华镜像 1. pip源更改: 2. conda源更改: pip和conda 添加国内清华镜像 python模块安装,使用国内源可以提高下载速度. 1. pip源 ...
- Anaconda安装第三方库与pip和conda 添加国内源
Anaconda安装第三方库 PIP使用命令 Anaconda命令 pip和conda 添加国内源 1:PIP相关命令 卸载 pip uninstall XXX 1.升级pip python -m p ...
- Python 包管理工具 pip 与 conda
简介 pip是接触 python 后最早认识的包管理工具.通过使用 pip 能够自动下载和解决不同 python 模块的依赖问题,使 python 的配置过程变得简单. 与 pip 类似,conda ...
- pip 和 Conda 镜像站配置
如果你经常使用 Python,那么你对 pip 和 Conda 一定不陌生,它们作为包管理器,可以非常方便的帮助我们下载需要的 Python 包,但是受限于大多 Python 包的服务器在国外,国内下 ...
- pip和conda到底有什么不一样?
今天看到我的foreman开始报错去询问才发现.我们的python包管理工具已经从pip整体迁移到了conda..最近的迁移真的非常多..前端也在迁移打包
- pip、conda 换国内源,大大提高下载速度
https://www.jianshu.com/p/b2d53904dd37 源就是下载地址了,换到国内的源下载速度真的快了近10倍,这里都用了清华的源 pip 只要新建一个配置文件,写上路径就行了 ...
随机推荐
- 【技术博客】利用handler实现线程之间的消息传递
[技术博客]利用handler实现线程之间的消息传递 一.handler简介 在Android Studio的开发中,经常需要启动多个线程.比如向远程发送请求时,必须新开一个子线程,否则会造成程序崩溃 ...
- Spring父子上下文的使用案例
Spring父子上下文的使用案例 一.背景 二.需求 三.实现步骤 1.基础代码编写 2.测试结果 四.小彩蛋 五.完整代码 一.背景 最近在看在使用Spring Cloud的时候发现,当我们通过Fe ...
- 2021.8.4考试总结[NOIP模拟30]
T1 毛衣衬 将合法子集分为两个和相等的集合. 暴力枚举每个元素是否被选,放在哪种集合,复杂度$O(3^n)$.考虑$\textit{meet in the middle}$. 将全集等分分为两部分分 ...
- 利用Nginx搭建Ambari本地安装源
1.下载本地源包https://docs.hortonworks.com/HDPDocuments/Ambari-2.7.3.0/bk_ambari-installation/content/ch_o ...
- 基于openeuler的openssl编程
------------恢复内容开始------------ 一.编译环境 我下载好之后默认安装了openssl,若未安装的可输入以下命令: wget https://www.openssl.org/ ...
- Vue 基础自查——watch、computed和methods的区别
1 前言 创建一个Vue实例时,可以传入一个选项对象 const vm = new Vue({ data: { msg: 'hello' }, computed: {}, methods: {}, w ...
- PE节表详细分析
目录 PE节表详细分析 0x00 前言 0x01 PE节表分析 节表结构 节表数量 节表名字 节表大小 节位置 节表属性 0x02 代码编写 PE节表详细分析 0x00 前言 上一篇文章我们学习了PE ...
- 【Python+postman接口自动化测试】(8)以青云客机聊天器人和图灵聊天机器人接口示范python发送get和post
以青云客机器人和图灵机器人接口示范python发送get和post 发送请求,我们这里主要使用Python的一个第三方包(需要先安装):requests. Python3自带的http.client和 ...
- Go语言核心36讲(Go语言实战与应用五)--学习笔记
27 | 条件变量sync.Cond (上) 前导内容:条件变量与互斥锁 我们常常会把条件变量这个同步工具拿来与互斥锁一起讨论.实际上,条件变量是基于互斥锁的,它必须有互斥锁的支撑才能发挥作用. 条件 ...
- [atAGC054D]ox
对于两个字符串$s$和$t$(保证其中每一种字符个数相同),定义$s$和$t$的相对逆序对数为$s$得到$t$的最少交换次数,显然同种字符相对顺序保持不变,因此即依次编号后的逆序对数 问题不妨看作构造 ...