一、写在前面
最近刚开始用python,对 pip install 和 conda install 没什么概念,出于某些原因先后用这两条指令下载了pytorch,不知道是因为冲突还是什么问题,Pycharm总是报错no module named torch
,可折腾死我了。于是我痛定思痛,搜集了网上的资料,对这两种安装方式的区别进行总结。
因为我也是才刚开始使用python,认识难免片面,大家觉得有问题的可以直接指出。
[参考文章]:
二、使用区别
[支持语言]:
- pip 是 python 官方推荐的包下载工具,但是只能安装python包
- conda 是一个跨平台(支持linux, mac, win)的
通用包和环境
管理器,它除了支持python外,还能安装各种其他语言的包,例如 C/C++, R语言等
[Repo源]:
- pip 从PyPI(Python Package Index)上拉取数据。上面的数据更新更及时,涵盖的内容也更加全面
- conda 从 Anaconda.org 上拉取数据。虽然Anaconda上有一些主流Python包,但在数量级上明显少于PyPI,缺少一些小众的包
[包的内容]:
- pip 里的软件包为
wheel版
或源代码发行版
。wheel属于已编译发新版的一种,下载好后可以直接使用;而源代码发行版必须要经过编译生成可执行程序后才能使用,编译的过程是在用户的机子上进行的- conda 里的软件包都是二进制文件,下载后即可使用,不需要经过编译
[环境隔离]:
- pip 没有内置支持环境隔离,只能借助其他工具例如virtualenv or venv实现环境隔离
- conda 有能力直接创建隔离的环境
[依赖关系]:
- pip安装包时,尽管也对当前包的依赖做检查,但是并不保证当前环境的所有包的所有依赖关系都同时满足。当某个环境所安装的包越来越多,产生冲突的可能性就越来越大。
- conda会检查当前环境下所有包之间的依赖关系,保证当前环境里的所有包的所有依赖都会被满足
[库的储存位置]:
- 在conda虚拟环境下使用 pip install 安装的库: 如果使用系统的的python,则库会被保存在 ~/.local/lib/python3.x/site-packages 文件夹中;如果使用的是conda内置的python,则会被保存到 anaconda3/envs/current_env/lib/site-packages中
- conda install 安装的库都会放在anaconda3/pkgs目录下。这样的好处就是,当在某个环境下已经下载好了某个库,再在另一个环境中还需要这个库时,就可以直接从pkgs目录下将该库复制至新环境而
不用重复下载
三、使用总结
推荐使用conda创建虚拟环境,能用conda安装的就先用conda,不行再使用pip安装。